pod install 和 pod update 的区别

许多人都有误解,以为 pod install 只是首次使用,之后都使用 pod update 来更新。

其实不然。

pod install 除了首次安装时使用,之后增删也可以用。

pod update 只有在需要更新pod时使用。

详细区别

要理解他们的区别,就不能不提Podfile.lock这个文件了。

从后缀lock可以看出来,这是一个锁。锁什么呢?锁住pods的版本。

在首次执行 pod install 时,CocoaPods 根据Podfile文件来导入合适版本的pods。

然后,Podfile.lock文件文件被创建,此次所有pod的版本信息会被记录在该文件中。

之后在执行 pod install 时,会先从Podfile.lock文件读取信息。

已有记录的pod,会维持原版本。

无记录的pod则根据Podfile导入合适版本的pod。然后新导入的pod信息也会被记录在Podfile.lock文件中。

这就是锁住版本的意思。

如果想要升级版本,那就需要使用pod update了。pod update 会忽略Podfile.lock文件,直接升级pod到Podfile允许的最新版本。

pod update 执行后最新的版本信息也会记录到Podfile.lock文件。

如果只想更新其中一个库,使用 pod update podname。

举例说明

第一步:

首先,张三新建了一个工程,创建了Podfile,在Podfile中引入了A、B、C 三个 pod。

然后执行 pod install,A、B、C 被导入,假设版本都是1.0.0。

Podfile.lock 会被创建, 记录下A、B、C 的版本为1.0.0。

第二步:

过了一段事件,张三在Podfile中新增了pod D。

假设D的版本也是1.0.0,而B已经发布了新版本1.1.0。

张三仅想导入D,而保持B的版本不变,避免更新B带来的风险。

于是张三执行了 pod install。

执行中,CocoaPods 发现 Podfile.lock 中B的版本是1.0.0,于是B维持不变。发现新增了D,于是导入了1.0.0的D,并将D的信息记录到 Podfile.lock。

第三步:

又过了一段时间,李四加入了项目。

假设C的已经发布了新版本1.2.0。

李四clone项目后,他使用 pod install。

命令执行时,发现A、B、C、D在Podfile.lock中都有记录,因此他获取的A、B、C、D也会都是记录的1.0.0。

这样就保证了张三和李四使用的第三方是一致的。

第四步:

半个月后,张三觉得B的1.1.0足够成熟,可以集成了,但是C的1.2.0还需要再等等。

于是,他执行了 pod update B 来升级B,但维持C的版本为1.0.0。

CocoaPods 会忽略 Podfile.lock 中记录的B的信息,强行更新B到1.1.0。

然后张三本地的Podfile.lock中B的版本信息也会更新到1.1.0。

张三提交,李四拉取后,执行 pod install,于是李四的B也更新到1.1.0。又跟张三保持一致了。

总结

需要更新pod版本时使用 pod update,其他情况下使用 pod install。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。