pod install与 pod update是我们使用CocoaPods管理第三方库最常用的命令,但是两者有什么区别呢?!
1、pod install
①每次执行$pod install会下载并安装新的pods。它会在Podfile.lock中为每一个pod记录下当前安装的版本。Podfile.lock用于跟踪每个pod的安装版本并锁定这些版本。
②当执行$pod install的时候,它只处理不在podfile.lock中的pod依赖。
- 对于在podfile.lock中列出的pods,它只会下载在podfile.lock记录的版本,不会尝试检查是否有新版本可用。
- 对于没有在podfile.lock中列出的pods,它会搜索与Podfile中版本限制相匹配的版本。(比如pod 'MyPod', '~>1.2')
2、pod update [PODNAME]
PODNAME是可选参数。
当执行$pod update PODNAME时,CocoaPods会尝试找到pod PODNAME的升级版本,而不会考虑podfile.lock中列出的版本。它会更新pod到最新的版本(只要它与Podfile中的版本限制相匹配)。
如果执行$pod update没有pod名称参数,CocoaPods将更新Podfile中的所有pod到最新版本。
3、pod outdated
执行$pod outdated时,CocoaPods将列出所有具有较新版本的pods,而不是podfile.lock中记录的那些。这意味着如果执行$pod update,$pod outdated列出的这些pods将会被更新——只要新版本符合podfile中的版本限制。
4、在podfile中使用精确版本是不够的
有些人可能会认为,通过在podfile中指定pod的精确版本,比如pod 'A ',' 1.0.0 ',就足以保证开发组所有人使用的pod库是相同的版本。
但实际上,如果pod A依赖于pod A2——在A.podspec中声明dependency 'A2 ',' ~> 3.0 '。在这种情况下,在podfile中使用pod“A”,“1.0.0”会迫使使用者始终使用pod A的1.0.0版本,但是:
- user1使用pod update可能会使用pod A2的3.4版本(当时的最新版)
- 新加入的user2执行pod install时,可能会得到pod A2的3.5版本(因为A2的维护者此时可能发布了一个新版本)。
【总结】
为了保证开发组成员使用的pods都是相同版本唯一的方法就是使用podfile.lock以及正确使用 pod install vs. pod update。
pod install用于工程第一次安装pod库和修改podfile(添加,更新,移除pod库)的时候。
pod update用于更新特定的pod(或所有的pod)版本时。