介绍
许多刚开始使用CocoaPods的人似乎认为pod intall 只是用于你第一次用CocoaPods来创建项目, pod update是随后一直应用的。但是这并不是全部。
这个guide的宗旨是解释你什么时候用pod intall 你什么时候用 pod update.
TL:DR:
1.用pod install 为你的项目安装新的pod. 即使你已经有了一个Podfile 并且之前已经pod install了。所以即使你仅仅只是在一个已经应用CocoaPods的项目中添加、移除pod.
2.用pod update是在你想要把pods更新到一个新的版本。
命令的详细描述
Note:单独的intall vs. update的单词对于CocoaPods并没有实际上的明确意义。它是受其他的依赖管理像是bundler, RubyGems 或者comporser ,这些有相似的命令,有准确相同的行为和意图在这个文档下描述的这些才有意义的。
pod install
这个将会被第一次使用于在你的项目中检索pod,也应用于你每一次剑姬你的Podfile去添加、更新 、删除一个pod.
1.每一次pod intall 命令运行 ——下载 或者 更新新的pods ——在Podfile.lock为每一个pods写入已经安装了的版本号。这个文件追踪每一个已经安装的pod的版本,并且锁定这些版本。
2.当你运行pod install,他仅仅解决并不在Podfile.lock中列入的pods的依赖。
a.对于已经在Podfile.lock中列入的pods,他不通过检查是否新的版本是可用的,只下载在Podfile.lock中已经明确的版本。
b.对于那些还没有在Podfile.lock中列入的pods, 他搜索匹配在Podfile中已经写入的版本(如 pod 'MyPod','~>1.2')
pod outdated
当你运行pod outdated, CocoaPods将列入比已经在Podfile.lock上列表的所有版本的更新的版本(这些版本是已经安装的pod)。这就意味着你在这些pods上运行pod update PODNAME,他们将会update —— 只要这些版本认知匹配在你的Podfile中设置的 pod 'MyPod', '~>x.y'的限制条件。
pod update
当你运行pod upate PODNAME, CocoaPod将会试图找到一个pod PODNAME已经更新了的版本,不考虑已经在Podfile.lock中列入的版本。它将会更新最新的版本(直到和你的Podfile中的版本一致)。
如果你只运行pod update,没有PODName, CocoaPods将会更新每一个你Podfile中列入的pod的最新版本。
使用
使用pod update PODNAME, 你将会更新一个特定的pod(检查新版本是否存在并且相应的更新)。相对的是pod install 不会更新你已经安装的pods.
当你添加pod 到你的Podfile,你应该运行pod install, 而不是pod update —— 安装这个新的pod 并且并不用冒险在同一个进程中来更新已经存在的pod。
你仅仅可以使用pod update当你想要更新特定pod(或者所有pod)的版本
提交你的Podfile.lock
作为提示,即使你们项目规则中并不需要提交Pods文件夹到你的仓库中,你也应该提交并push你的Podfile.lock文件。
否则,它将会打破整个关于pod install 将会锁定你已经的安装的pods的逻辑。
举例 ,并且原文 http://guides.cocoapods.org/using/pod-install-vs-update.html#intended-usage