我們?cè)趫F(tuán)隊(duì)開發(fā)時(shí)叽赊,經(jīng)常需要更新 CocoaPods,有時(shí)候會(huì)遇到更新不到最新版本第三方庫的問題。
更新第三方庫的常用的命令
首先回顧幾個(gè)更新第三方庫的常用的命令
更新所有庫最簡單基本的方法:
pod update
更新本地倉庫:
pod repo update
簡單來說,這條命名是用來更新本地 CocoaPods 的 spec 資源配置信息庶诡。安裝完 CocoaPods 后扯俱,在用戶根目錄下有個(gè)隱藏文件夾~/.cocoapods
晴玖,里面是 CocoaPods 收錄的所有庫的配置信息。pod repo update
實(shí)際是更新整個(gè).cocoapods下的所有庫尔当,其實(shí)我們也可以只更新其中某個(gè)庫來達(dá)到快速可用的目的。
pod repo update ~/.cocoapods/repos/master/Specs/
更新指定第三方庫最簡單基本的方法:
pod update 庫名
把Podfile內(nèi)全部的庫更新重新安裝:
pod install
只更新新添加的庫弄兜,已更新的庫忽略:
pod install --verbose --no-repo-update
只更新指定的庫替饿,其它庫忽略:
pod update 庫名 --verbose --no-repo-update
參數(shù)解釋
參數(shù) –verbose 和 –silent
這兩個(gè)參數(shù)是用來控制 pod 命令的踱卵,有些人不希望看到輸出的情況下可以選擇 --silent,--verbose 的意思則是輸出詳細(xì)日志信息。
加 --verbose 的意義在于可以輸出更詳細(xì)的配置過程 debug 信息,在書寫時(shí)位置也可以換喳坠。
參數(shù) --no-repo-update:
在我們輸入pod install
或者pod update
之后,CocoaPods 首先會(huì)去匹配本地的 spec 庫怠肋,在確認(rèn) spec 版本庫不需要更新之后,才會(huì)下載相應(yīng)的庫文件,這樣比較耗時(shí)贷盲。所以一般使用時(shí)會(huì)加上 --no-repo-update
,跳過 spec 版本庫更新匹配佳魔。
但是這樣會(huì)有個(gè)問題,如果 github 上 pods 的三方庫有新版本了,你本地搜索到的還是舊版本并思,如果用的新版本號(hào)是無法裝配的音婶,所以每隔一段時(shí)間最好執(zhí)行一下pod repo update
。
另外首次 install 不應(yīng)該添加這個(gè)標(biāo)志住册,后續(xù)修改 Podfile 的時(shí)候可以適當(dāng)使用帅掘,加快 pod 速度。
遇到的更新場(chǎng)景
情況一:
Cocoapods 本地 Pod 的索引文件沒有更新吱窝,所以本地庫還是舊版本讥邻,自然怎么都無法更新到最新版。
解決方法:
- 打開終端院峡,查看一下 Cocoapods 的版本號(hào):
pod --version
如果不是最新版本兴使,升級(jí)一下 Cocoapods 版本:sudo gem install -n /usr/local/bin cocoapods --pre
- 但是有時(shí)候 Cocoapods 升到最新版本后,cd 到工程文件下
pod install
照激,發(fā)現(xiàn)還是沒有更新最新的庫发魄。這時(shí)候需要更新本地 Pod 的索引文件:pod setup
或pod repo update
。 - 此時(shí)再
pod install
或pod update
俩垃,應(yīng)該就是最新的了励幼。
情況二:
因?yàn)楣敬罱俗约旱?GitLab 庫,經(jīng)常發(fā)現(xiàn)pod update
下來的還是舊代碼口柳。
這是由于 Pod 緩存造成的苹粟,雖然本地和遠(yuǎn)程 Git 倉庫都是最新版本,但是本地 Pod 緩存中跃闹,依舊有舊版的緩存嵌削,執(zhí)行pod update
時(shí)毛好,會(huì)先從本地緩存讀取數(shù)據(jù)。
解決方法:
- cd 到
~/資源庫/Caches/CocoaPods/Pods/Release/庫名
掷贾; - 刪除庫名下的文件睛榄,如
~/資源庫/Caches/CocoaPods/Pods/Release/庫名/1.0.0-fbd65
荣茫; -
pod cache clean 庫名
想帅; - cd 到項(xiàng)目中,刪除 Pods/庫名啡莉,刪除 Podfile.lock港准,再
pod update
,代碼更新成功咧欣。