原文作者日戈,本帖只為學習
cocoapods現(xiàn)在幾乎成了iOS開發(fā)的標配工具之一,可以統(tǒng)一孙乖、高效的引入和管理第三方庫浙炼,可以來自Github,私有Gitlab或者本地文件系統(tǒng)唯袄。安裝教程已經(jīng)多得用度娘就能隨便搜出來能用的弯屈,為什么pod install慢也有了各種加速姿勢。本篇聊聊pod repo update
或者pod install --repo-update
命令恋拷。
有個場景资厉,幾個人共同維護一個項目,Podfile也是共同維護一份蔬顾。有一天其中一個人宴偿,升級了Podfile中某個庫的版本,比如AFNetworking
從3.0.4
升級到了3.1.0
阎抒, pod 'AFNetworking', '~> 3.1.0’酪我。
然后,你更新了最新的Podfile且叁,跑了一下pod install都哭。。逞带。欺矫。。展氓。
1穆趴、先從pod install拋出的異常開始,如下圖:
為了解決這個異秤龉可能嘗試一下:
(1)是不是Podfile和Podfile.lock 文件不同步未妹?刪掉.lock文件再pod install一次簿废,仍然報錯。
(2)是不是AFNetworking沒有3.1.0版本络它?pod search afnetworking一下族檬,版本存在。
如果被我猜中了化戳,證明你把焦點放在了異常前三行单料,而忽略了最關(guān)鍵的信息:
None of your spec sources contain a spec satisfying the dependencies: AFNetworking (~> 3.1.0), AFNetworking (= 3.1.0)
。
這句話的意思是說:你spec資源
中不包含AFNetworking的3.1.0的配置信息点楼。這里面有個關(guān)鍵詞扫尖,spec資源和配置信息。
然后最下面提醒pod repo update’ does not happen on ‘pod install’ by default掠廓。
意思是默認情況下换怖,執(zhí)行pod install不會自動執(zhí)行pod repo update命令。那么pod repo update做了什么却盘?
2狰域、pod repo update
簡單來說,pod repo update命名是用來更新本地cocoapods的spec資源配置信息黄橘。
安裝完cocoapods后兆览,在用戶根目錄下有個隱藏文件夾,/Users/<user>/.cocoapods
塞关,里面是cocoapods收錄的所有庫的配置信息抬探,/Users/<user>/.cocoapods/repos/master/Specs/<lib name>
。比如AFNetworking就是/Users/<user>/.cocoapods/repos/master/Specs/AFNetworking
帆赢,內(nèi)部分版本包含多個文件夾小压,每個文件夾內(nèi)包含一個配置文件,比如AFNetworking.podspec.json
椰于。
上面報錯的原因就是怠益,Podfile中AFNetworking的版本更新到了3.1.0,但是本地.cocoapods下找不到相應(yīng)的配置文件瘾婿。
然后按照提示蜻牢,執(zhí)行pod repo update
,碰到網(wǎng)速慢的時候偏陪,命令執(zhí)行完了就不動了抢呆,又被迫擺出葛優(yōu)躺等著。
重點來了笛谦,pod repo update實際是更新整個.cocoapods下的所有庫抱虐,其實我們可以只更新其中某個庫來達到快速可用的目的。下面提供兩個方法解決:
(1)正規(guī)方法:
指定更新單獨庫pod repo update /Users/<user>/.cocoapods/repos/master/Specs/<lib name>
(2)野路子:
如果方法1仍然無法解決問題饥脑,而又著急使用恳邀∨潮可以直接到相應(yīng)目錄下手動增加缺少的版本目錄和spec文件,/Users/<user>/.cocoapods/repos/master/Specs/<lib name>/3.2.0/<lib name>.spec轩娶。spec文件參考git上相應(yīng)庫的版本儿奶。
靈活點,挺好鳄抒!