我们 Xcode 项目中的 podfile.lock 是啥,为啥要使用它?

Posted

技术标签:

【中文标题】我们 Xcode 项目中的 podfile.lock 是啥,为啥要使用它?【英文标题】:What is podfile.lock in our Xcode projects and why is it used?我们 Xcode 项目中的 podfile.lock 是什么,为什么要使用它? 【发布时间】:2017-07-28 23:45:49 【问题描述】:

我是在 Xcodeprojects 中使用 pod 的初学者。我一直对 pod file.lock 感到困惑。我想将框架“OBJECTMAPPER”更新到 2.0 以使其与 swift 3 兼容。但它不兼容。

为什么不更新到最新版本(2.0)。它与 pod file.lock 有什么关系。如下->

为什么要使用它?

更新:podfile

【问题讨论】:

查看文档:guides.cocoapods.org/using/… 要在此处获得更多帮助,请显示您的 Podfile 的内容 我已经编辑了帖子 Podfile.lock是YAML文件作为Podfile的助手。 【参考方案1】:

以防万一有人想知道我在 2 年前所做的事情。我会讲一个小说明。当您使用 cocoapods 安装库时,您将生成一个针对它的 podlock,其版本是它(库)安装的版本。例如,假设您有一个名为“XX”的库,并且您使用 pod 安装它。如果 "XX" 的最新版本是 2.0.0,那么你将安装最新版本并且 podfile.lock 被锁定为 -(XX - (2.0.0))

假设如果发布了该库的新版本并且您不希望在我们的项目中安装它的更新,然后使用 pod install.. 这只会在 podfile 中安装任何新库,并且不会通过更新它们来影响您现有的库到最新的代码。(“这可以防止你曾经使用过的该库的某些功能在它们贬低时不会消失”)。这是由 podfile.lock 监控的

如果您想在将来将“XX”更新为较新的版本,请为该库使用 pod update

【讨论】:

【参考方案2】:

pod install 不会将 ObjectMapper 更新到最新版本,因为它没有理由这样做。 ObjectMapper 作为 UberRides 的依赖项包含在内,1.5.0 版本满足 1 或更高版本的要求。

为了强制更新,您可以将 ObjectMapper 添加到具有所需版本的 podfile 中,例如

pod 'ObjectMapper', '2.0'

【讨论】:

我做了 pod Update ... 不是 pod install

以上是关于我们 Xcode 项目中的 podfile.lock 是啥,为啥要使用它?的主要内容,如果未能解决你的问题,请参考以下文章

自动化将生成的 proto 文件包含到 Xcode 项目中的过程

删除 XCode 8 中的单元测试

Xcode 5 中的本地化

Xcode8:图像文字在框架中的使用

Xcode开发中的6个小技巧

我们可以以某种方式自定义 xcode 模拟器中的 RAM 大小吗