CocoaPods 更新库
我们在团队开发时,经常需要更新 CocoaPods,有时候会遇到更新不到最新版本第三方库的问题。
更新第三方库的常用的命令
首先回顾几个更新第三方库的常用的命令
更新所有库最简单基本的方法:
pod update
更新本地仓库:
pod repo update
简单来说,这条命名是用来更新本地 CocoaPods 的 spec 资源配置信息。安装完 CocoaPods 后,在用户根目录下有个隐藏文件夹~/.cocoapods
,里面是 CocoaPods 收录的所有库的配置信息。pod repo update
实际是更新整个.cocoapods下的所有库,其实我们也可以只更新其中某个库来达到快速可用的目的。
pod repo update ~/.cocoapods/repos/master/Specs/
更新指定第三方库最简单基本的方法:
pod update 库名
把Podfile内全部的库更新重新安装:
pod install
只更新新添加的库,已更新的库忽略:
pod install --verbose --no-repo-update
只更新指定的库,其它库忽略:
pod update 库名 --verbose --no-repo-update
参数解释
参数 –verbose 和 –silent
这两个参数是用来控制 pod 命令的,有些人不希望看到输出的情况下可以选择 --silent,--verbose 的意思则是输出详细日志信息。
加 --verbose 的意义在于可以输出更详细的配置过程 debug 信息,在书写时位置也可以换。
参数 --no-repo-update:
在我们输入pod install
或者pod update
之后,CocoaPods 首先会去匹配本地的 spec 库,在确认 spec 版本库不需要更新之后,才会下载相应的库文件,这样比较耗时。所以一般使用时会加上 --no-repo-update
,跳过 spec 版本库更新匹配。
但是这样会有个问题,如果 github 上 pods 的三方库有新版本了,你本地搜索到的还是旧版本,如果用的新版本号是无法装配的,所以每隔一段时间最好执行一下pod repo update
。
另外首次 install 不应该添加这个标志,后续修改 Podfile 的时候可以适当使用,加快 pod 速度。
遇到的更新场景
情况一:
Cocoapods 本地 Pod 的索引文件没有更新,所以本地库还是旧版本,自然怎么都无法更新到最新版。
解决方法:
- 打开终端,查看一下 Cocoapods 的版本号:
pod --version
如果不是最新版本,升级一下 Cocoapods 版本:sudo gem install -n /usr/local/bin cocoapods --pre
- 但是有时候 Cocoapods 升到最新版本后,cd 到工程文件下
pod install
,发现还是没有更新最新的库。这时候需要更新本地 Pod 的索引文件:pod setup
或pod repo update
。 - 此时再
pod install
或pod update
,应该就是最新的了。
情况二:
因为公司搭建了自己的 GitLab 库,经常发现pod update
下来的还是旧代码。
这是由于 Pod 缓存造成的,虽然本地和远程 Git 仓库都是最新版本,但是本地 Pod 缓存中,依旧有旧版的缓存,执行pod update
时,会先从本地缓存读取数据。
解决方法:
- cd 到
~/资源库/Caches/CocoaPods/Pods/Release/库名
; - 删除库名下的文件,如
~/资源库/Caches/CocoaPods/Pods/Release/库名/1.0.0-fbd65
; -
pod cache clean 库名
; - cd 到项目中,删除 Pods/库名,删除 Podfile.lock,再
pod update
,代码更新成功。