pod install与pod update的区别

最近在参与项目的重构,要把许多模块都pod化,趁这个机会仔细学习下pod。

引言

许多使用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总是使用podA1.0.0版本,但是:

  • 用户1可能会使用A23.4版本
  • 同时当随后加入项目的用户2运行了pod install命令,他可能会得到podA23.5版本(因为A2的维护者可能发布了一个新的版本)

这就是为什么唯一能够保证团队中所有的成员都用使用pod库的相同版本的方法就是使用Podfile.lock并且正确的使用pod installpod update

在使用CocoaPods时,pod install是一条指令,用于根据Podfile文件中的依赖关系来安装项目中所需要的所有库和框架。 使用pod install会生成一个Pods文件夹,其中包含了项目所需要的所有依赖库的源代码和资源文件。这样,在项目中就可以通过import或者其他方式来使用这些库了。 与之相对的是pod update指令,它会根据Podfile文件中的依赖关系更新项目中的库版本,即将已安装的库更新为最新版本。 使用pod update会检查库的最新版本,并下载更新到本地的Pods文件夹中。然而,需要注意的是,pod update会更新所有的库,可能会导致某些库的版本不兼容或者出现其他问题。因此,在使用pod update时需要谨慎,并且在更新之前先备份项目以防万一。 为了确保项目中的所有开发者都使用相同版本的库,可以使用Podfile.lock文件来锁定库的版本。Podfile.lock文件会记录项目中每个库的具体版本号,这样在执行pod install时,CocoaPods会根据Podfile.lock文件中的版本信息来安装相应的库。这样可以避免不同开发者之间因为库版本不一致而导致的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [iOS进阶 - pod installpod update 读这一篇就够了](https://blog.csdn.net/qq_22326601/article/details/113174475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值