1. 先看下官方引用TL;DR的说明:
- Use pod install to install new pods in your project. Even if you already have a Podfile and ran pod install before; so even if you are just adding/removing pods to a project already using CocoaPods.
(pod install 用于安装新添加的pods,只要编辑过podfile,如增删改之后,就pod install一下)- Use pod update [PODNAME] only when you want to update pods to a newer version.
(pod update 可以加指定的pod名,用于更新pod库代码到一个新的版本)
2. 再结合应用场景白话一下:
pod install
pod install 运行时干了几件事:
- 下载 和 安装 新的 Pods;
- 把每个 Pod 安装的 版本 写入 Podfile.lock,此文件跟踪每个 pod 的已安装版本并锁定这些版本;
- 如果pod库已经安装过,当运行时pod install时,它只会解析Podfile.lock 文件;
3.1 对于pod Podfile.lock中列出的显式版本 ,对应下载,而不尝试检查是否有更新的版本可用;
3.2 对于pod Podfile.lock中尚未列出的 ,它会搜索与Podfile(如pod ‘MyPod’, ‘~>1.2’)中描述的版本相匹配的版本
pod update
-
如果指定name (pod update PODNAME),CocoaPods 会尝试查找 pod 的更新版本PODNAME,而不考虑Podfile.lock. 它会将 pod 更新到可能的最新版本(只要它符合您的版本限制Podfile)。
-
如果您在pod update没有 pod 名称的情况下运行,CocoaPods 会将您列出的每个 pod 更新Podfile到可能的最新版本。
-
还有个命令 pod outdated,当你运行时pod outdated,CocoaPods 会对比Podfile.lock(每个 pod 当前安装的版本)中的pod库版本,列出所有版本更新。这意味着如果您pod update PODNAME在这些 pod 上运行,它们将被更新——只要新版本仍然符合pod ‘MyPod’, ‘~>x.y’.
总结
重点区别在于:需不需要更新pod库的版本。
- pod install 安装的pod库,被锁死版本号在podfile.lock中,每次pod install,在不指定版本号的情况下,沿用旧版本。
- 这时候如果想更新版本了,pod update 才真正发挥其作用。
- 附官网关于两个命名的对比:戳这里跳cocoaPods官网
- 官网举例说明podfile写死版本号,并不能保证所有协同开发者用同一版本号的特例,值得注意。