250

我了解以下命令将更新单个 pod pod update <podname>:但是,这也会更新您之前安装的其他 pod(更新命令中未包含的 pod)的依赖关系。有没有办法更新单个 pod 并保留所有其他依赖项?

4

9 回答 9

356

确保您安装了最新版本的 CocoaPods。

$ pod update PODNAME最近推出了。

有关更多信息,请参阅此问题主题

$豆荚更新

运行时pod update SomePodName,CocoaPods 将尝试查找 pod SomePodName 的更新版本,而不考虑Podfile.lock. 它会将 Pod 更新到可能的最新版本(只要它符合 Podfile 中的版本限制)。

如果您在没有任何 pod 名称的情况下运行 pod update,CocoaPods 会将您的 Podfile 中列出的每个 pod 更新为可能的最新版本。

于 2014-10-14T01:14:56.423 回答
205

要安装单个 pod 而不更新现有的 -> 将该 pod 添加到您的 Podfile 并使用:

pod install --no-repo-update

要删除/更新特定的 pod,请使用:

pod update POD_NAME

经测试!

于 2016-04-01T11:24:22.407 回答
60

现在是 2015 年

因此,因为pod update SomePod涉及最新版本的 cocoapods 中的所有内容,所以我找到了一种解决方法。

请按照以下步骤操作:

  1. SomePod_Podfile

  2. pod install

pods 现在SomePod将从我们的项目和Podfile.lock文件中删除。

  1. 放回SomePod_Podfile

  2. pod install再次运行

这次我们的 pod 的最新版本将被安装并保存在Podfile.lock.

于 2015-11-30T17:22:36.093 回答
39

只是说:

pod install- 用于安装新的 pod,

pod update- 用于更新现有的 pod,

pod update podName- 仅更新特定的 pod 而不会触及其他 pod,

pod update podName versionNum- 用于更新/降级特定 pod 而无需接触其他 pod

于 2018-12-10T09:37:22.040 回答
34

你永远不可能得到 100% 的隔离。因为一个 pod 可能有一些共享的依赖关系,如果你尝试更新你的单个 pod,那么它也会更新其他 pod 的依赖关系。如果没问题,那么:

tl;博士使用:

pod update podName

为什么?参见下文。

  • pod update不会尊重podfile.lock. 它将覆盖它——与那个单一的吊舱有关
  • pod install将尊重podfile.lock,但会尝试根据其锁定到的版本(在 Podfile.lock 中)安装 podfile 中提到的每个 pod。

此图有助于更好地理解差异:

在此处输入图像描述


主要问题来自~>又名乐观运算符

使用精确的版本Podfile是不够的

有些人可能认为,在他们的 中指定他们的 pod 的确切版本Podfilepod 'A', '1.0.0'足以保证每个用户都将拥有与团队中其他人相同的版本。

然后他们甚至可能会pod update使用Podfile.

但事实上,这并不足以保证我们上述场景中的 user1 和 user2 将始终获得所有 pod 的完全相同的版本。

一个典型的例子是,如果 pod 对 podA有依赖关系A2——声明A.podspecdependency 'A2', '~> 3.0'. 在这种情况下,'A', '1.0.0'在 Podfile 中使用 pod 确实会强制 user1 和 user2 都始终使用 pod A 的 1.0.0 版本,但是:

  • user1 可能以 pod A2in version结束3.4(因为那是当时A2的最新版本)
  • 而当 user2pod install稍后加入项目时运行时,他们可能会获得 pod A2in version 3.5(因为其维护者A2可能在此期间发布了新版本)。这就是为什么确保每个团队成员在每个计算机上使用相同版本的所有 pod 的唯一方法是使用Podfile.lock并正确使用pod installpod update.

以上摘录均来自pod install vs. pod update

我也强烈推荐看看a 做了podfile.lock什么

于 2019-09-19T17:55:19.463 回答
24

只是一个小通知。

pod update POD_NAME

仅当已安装此 pod 时才有效。否则你将不得不用

pod update

命令

于 2015-07-08T17:29:03.377 回答
10

我正在使用cocoapods version 1.0.1和使用pod update name-of-pod完美的作品。不会更新其他 pod,只会更新您输入的特定 pod。

于 2016-09-30T01:15:17.127 回答
3

这有点离群,不太可能是 OP 正在处理的问题,但pod update <podname>如果您在计算机上使用本地 pod,则并非在所有情况下都有效。

在这种情况下,唯一会触发pod update工作的是 podspec 文件是否发生更改。但是,进行更改也将允许pod install工作。

在这种情况下,您只需将描述或摘要等小部分修改一个字母,然后您就可以成功运行 install 或 update 命令。

于 2017-11-27T21:48:18.537 回答
1

pod update POD_NAME将更新最新的 pod 但不更新Podfile.lock文件。

因此,您可以使用特定版本的 pod 更新您的 Podfile,例如pod 'POD_NAME', '~> 2.9.0',然后使用命令pod install

稍后,您可以从 Podfile 中删除特定版本命名,并再次使用pod install. 这将有助于保持Podfile.lock更新。

于 2020-11-09T04:01:55.480 回答