原文作者,本帖只為學習
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一下,版本存在。
如果被我猜中了,證明你把焦點放在了異常前三行,而忽略了最關鍵的信息:
None of your spec sources contain a spec satisfying the dependencies: AFNetworking (~> 3.1.0), AFNetworking (= 3.1.0)。
這句話的意思是說:你spec資源中不包含AFNetworking的3.1.0的配置信息。這里面有個關鍵詞,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,內部分版本包含多個文件夾,每個文件夾內包含一個配置文件,比如AFNetworking.podspec.json。

上面報錯的原因就是,Podfile中AFNetworking的版本更新到了3.1.0,但是本地.cocoapods下找不到相應的配置文件。
然后按照提示,執(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仍然無法解決問題,而又著急使用??梢灾苯拥较鄳夸浵率謩釉黾尤鄙俚陌姹灸夸浐蛃pec文件,/Users/<user>/.cocoapods/repos/master/Specs/<lib name>/3.2.0/<lib name>.spec。spec文件參考git上相應庫的版本。
靈活點,挺好!