引言
许多使用cocoapod的人认为pod install
只在第一次使用CocoaPod设置项目的时候使用,pod update
是在设置完项目之后使用的,但事实并非如此。
这篇指南将会说明什么时候应该使用pod install
,什么时候应该使用pod update
。
如果你觉得这篇指南太过于冗长看不下去,那么先给出干货:
- 当你需要向向你的项目中安装新的pod库时使用
pod install
。即使之前你已经有一个Podfile并且执行了pod install,即使你是在向一个已经使用了CocoaPods的项目中添加或移除pod库。 - 只有当你想要更新pod库的版本时才使用pod update。
命令的详细介绍
pod install
pod install一般是你第一次想要为项目添加pod的时候使用的,它同样也使用在你为Podfile文件添加或移除pod库的时候。
- 每次pod install命令运行的时候,pod install会为每一个它安装的pod库在Podfile.lock文件中写入其版本号。Podfile.lock文件追踪每一个安装的pod库的版本号,并锁定这些版本号。
- 当你运行pod install是,它将只解决不在Podfile.lock中的pod库依赖关系
- 对于在Podfile.lock文件中的pod库,pod install会只下载Podfile.lock文件中指定的版本,而不会去检查这个库是否有更新的版本。
- 对于不在Podfile.lock文件中的pod库,pod install会搜索这个pod库在Podfile文件中指定的版本
pod outdated
每当你运行pod outdated
命令时,CocoaPods会列出所有在Podfile.lock中的有新版本的pod库。这意味着当你对这些pod使用pod update PODNAME
时,他们会更新(只要新版本仍然遵守你在Podfile
中做的类似于pod 'MyPod', '~>x.y'
这样的限制)
pod update
当你运行了pod update PODNAME
命令,CocoaPods会在不考虑Podfile.lock
中版本的情况下试着去查找PODNAME
的最新版本。pod update PODNAME
命令会将相应的pod更新到最新的版本(新版本仍然遵守你在Podfile
中做的限制)
用法
通过pod update PODNAME
,你可以只更新某个特定的pod库(检查是否存在新版本并更新相应的pod库)。相反,pod install
则不会去更新已安装的pod库。
当你向Podfile
中添加了pod,你应该使用pod install
而不是pod update
去在不更新已安装的pod库的版本基础上安装新添加的pod库。
当你想过更新某个特定pod库(或所有的库)的版本时你只需要使用pod update
提交你的Podfile文件
提醒一下,即使你没有把Pods文件夹提交到你的共享仓库,你都应该总是commit并push你的Podfile.lock文件。
否则的话,将会破坏pod install
能够锁定pod库的已安装版本的整个逻辑(如上面所说的那样)
在Podfile中使用确定的版本是不够的
有人认为通过在Podfile
中为pod指定确定的版本就足够保证所有的用户都会拥有相同的版本。
随后他们可能会只使用pod update
(即使是在添加一个新pod时),并且认为这将不会更新其他pod库版本,因为已经在Podfile
中指定了确定的版本。
但是事实上,这样做不能够保证用户1和用户2总是取得完全相同的pod库版本。
一个典型的例子是,如果pod A
依赖于podA2
(通过在A.podspec
中的dependency 'A2', '~> 3.0
声明的)。在这种情况下,在你的Podfile中使用pod 'A', '1.0.0'
的确会强制用户1和用户2总是使用podA
的1.0.0
版本,但是:
- 用户1可能会使用
A2
的3.4
版本 - 同时当随后加入项目的用户2运行了
pod install
命令,他可能会得到podA2
的3.5
版本(因为A2
的维护者可能发布了一个新的版本)
这就是为什么唯一能够保证团队中所有的成员都用使用pod库的相同版本的方法就是使用Podfile.lock
并且正确的使用pod install
和pod update
转载自:https://blog.csdn.net/ShorewB/article/details/52207569