工具iOS 代码管理

iOS--Pod install && Pod

2017-02-05  本文已影响1516人  原鸣清

引言

许多人在最初接触CocoaPods时认为pod install只是在第一次为项目设置CocoaPods时使用,之后都应该使用pod update.看起来是这样,但也不是(But that's not the case at all.)。
这篇文章的目的就是教你啥时候用pod install,啥时候用pod update

名词解释

pod:本文中指某一个第三方库,理解为一个软件或插件就好
pods:pod的复数

摘要:

命令详细介绍

注意:install和update的区别不是CocoaPods特有的,这个灵感来自于很多其他的依赖管理工具,像bundler,RubyGems还有composer,他们都有类似的命令表示和这篇文章提到的类似行为和意图
pod install
这个命令不仅仅用于第一次为项目下载pods,之后的开发过程中,如果有需要增加,更新或者移除pod,也需要使用它。

pod outdated
当你使用pod outdated,CocoaPods会帮你把Podfile.lock文件中有新的版本的可供更新的pod列出来,这就表示你使用pod update PODNAME就可以更新这些pod,前提是这个新的版本同样符合你在Podfile中所设的版本约束。

pod update
当你使用pod update PODNAME,CocoaPods会去找到指定PODNAME的更新,不再从Podfile.lock列表中的版本作比对,它会尽可能的更新到最新版本(前提是新版本和你在Podfile中所设的约束匹配)。
如果你使用pod update,不指定pod名,CocoaPods将遍历你在Podfile中列出来的所有pods到符合约束的最新版本

用途

使用pod update PODNAME,你可以更新指定的pod(检索到符合约束的可更新的版本存在,会更新它)。相反pod install并不会更新已安装过的pods到新版本。
当你增加一个pod到你的Podfile,你应该使用Pod install,而不是pod update(在安装新的pod同时冒险更新了已存在的pod)。
pod update [PODNAME]仅该被用在你想要更新某个pod的版本时(或者是所有版本)

提交你的Podfile.lock

建议情况下,即使你决定不提交Pods的文件夹到共享仓库,你也应该提交(commit&push)你的Podfile.lock文件。
否则,pod install可以锁住版本的逻辑就不成立

情景示例

使用固定版本在Podfile中是不够的

有的人可能觉得,我在Podfile中使用精确的固定版本,例如pod ‘A’, ‘1.0.0’,是不是可以确保我团队的所有成员使用的都是同一个版本。
他们也使用
pod update,这次只会增加新的pod,认为它不会有任何更新其它pods的风险,因为版本已经被指定了。
但实际上,这不能确保我们上面示例中的用户1和用户2获得的所有pods版本都一致。
典型的例子是如果pod A依赖于pod A2(在A.podspec中声明:dependency ‘A2’, ‘~> 3.0’)。这种情况下,在你的Podfile中使用
pod ‘A’, ‘1.0.0’*将强制用户1和用户2使用podA的1.0.0版本,但是:

关于版本指定约束

上一篇下一篇

猜你喜欢

热点阅读