pod 版本库写法的含义
pod 'AFNetwork', :tag => '1.0.1' //指向具体的某一个tag 也可以使用下边简略写法
pod 'AFNetwork' //不显式指定依赖库版本,表示每次都获取最新版本
pod 'AFNetwork', '2.0' //只使用2.0版本
pod 'AFNetwork', '>2.0' //使用高于2.0的版本
pod 'AFNetwork', '>=2.0' //使用大于或等于2.0的版本
pod 'AFNetwork', '<2.0' //使用小于2.0的版本
pod 'AFNetwork', '<=2.0' //使用小于或等于2.0的版本
pod 'AFNetwork', '~>0.1.2' //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0
pod 'AFNetwork', '~>0.1' //使用大于等于0.1但小于1.0的版本
pod 'AFNetwork', '~>0' //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本
Cocoapods建议采用pod ‘ AFNetwork’, ‘~> 0.1.2’这种写法,注意这里所说的最新版本只是相对本地repos库中而言
--no-repo-update
--no-repo-update 可以禁止更新本地的repos库文件,进而提高pod update速度.
有时候pod update时会特别慢,就是因为在更新repos,特别是CocoaPods的官方repo. 所以如果只是想更新到本地repos库中的最新版本可以使用
pod update --no-repo-update
更新指定的第三方到本地repos库中最新版本,不更新工程中其他的本地第三方
pod update 第三方名字 --no-repo-update
例如:
pod update AFNetworking --no-repo-update
注意这种带有--no-repo-update的更新,只是将工程中的库更新至本地repos中的最新版本,并不是cocoapod官网中的最新版本
而pod install,会根据指定版本添加库,如果是首次install 或者 删除了Podfile.lock文件, pod install 会安装本地repos库中的最新版.如果是非首次install,则根据pod的写法来判断是否要更新工程中的库,例如pod 'AFNetwork', '~>0.1.2' 这种写法,如果原来已经安装过0.1.2版本,Podfile.lock中就为0.1.2版本,满足~>0.1.2这个条件,那么pod install的时候是不会更新到最新版的。如果修改podfile中的为'AFNetwork', '~>0.1.6' ,而Podfile.lock中的为0.1.2,不满足条件,那么install就会更新至本地repos中的、最新的、符合条件的版本.
快速更新指定的库到线上最新版本
-
在 ~/.cocoapods/repos/master目录下搜索指定的库
-
手动增加缺少的版本目录和podspec文件,
~/.cocoapods/repos/master/Specs/.../AFNetworking/3.2.1/AFNetworking.podspec.json。 podspecspec文件的内容直接复制git上相应库的版本。
然后就能搜索到最新版本了,使用以下方式直接更新工程中的AFNetworking库到最新版本
pod update AFNetworking --no-repo-update
由于修改了文件,所以影响到了版本的状态,所以对于私有的repos仓库,可以临时保存一下修改git stash 或者用完后删除修改。对于master/specs中的修改,最好是用完后删除掉,然后使用正规方式更新repos库
pod repo update
升级cocoapods
要想成功升级cocoapods需要一个正确的操作流程和命令语句。
1、更新gem:
sudo gem update --system`
2、删除gem源:
gem sources --remove https://ruby.taobao.org/
3、修改gem源:
gem sources -a https://gems.ruby-china.com/
4、查看gem源是否是最新的:
5、升级cocoapods:
sudo gem install -n /usr/local/bin cocoapods --pre
6、查看升级后的cocoapods版本:
pod --version
更新本地repos仓库
pod repo update
更新指定的cocoapods库
pod repo update CustomPrivatePods(这是个索引库,你可以替换成自己的)