cocoapods現(xiàn)在幾乎成了iOS開發(fā)的標配工具之一,可以統(tǒng)一臭胜、高效的引入和管理第三方庫莫其,可以來自Github,私有Gitlab或者本地文件系統(tǒng)耸三。安裝教程已經(jīng)多得用度娘就能隨便搜出來能用的乱陡,為什么pod install
慢也有了各種加速姿勢。本篇聊聊pod 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)庫的版本断楷。
靈活點锨匆,挺好!