我了解以下命令将更新单个 pod pod update <podname>
:但是,这也会更新您之前安装的其他 pod(更新命令中未包含的 pod)的依赖关系。有没有办法更新单个 pod 并保留所有其他依赖项?
9 回答
确保您安装了最新版本的 CocoaPods。
$ pod update PODNAME
最近推出了。
有关更多信息,请参阅此问题主题:
$豆荚更新
运行时
pod update SomePodName
,CocoaPods 将尝试查找 pod SomePodName 的更新版本,而不考虑Podfile.lock
. 它会将 Pod 更新到可能的最新版本(只要它符合 Podfile 中的版本限制)。如果您在没有任何 pod 名称的情况下运行 pod update,CocoaPods 会将您的 Podfile 中列出的每个 pod 更新为可能的最新版本。
要安装单个 pod 而不更新现有的 -> 将该 pod 添加到您的 Podfile 并使用:
pod install --no-repo-update
要删除/更新特定的 pod,请使用:
pod update POD_NAME
经测试!
现在是 2015 年
因此,因为pod update SomePod
涉及最新版本的 cocoapods 中的所有内容,所以我找到了一种解决方法。
请按照以下步骤操作:
从
SomePod
_Podfile
跑
pod install
pods 现在SomePod
将从我们的项目和Podfile.lock
文件中删除。
放回
SomePod
_Podfile
pod install
再次运行
这次我们的 pod 的最新版本将被安装并保存在Podfile.lock
.
只是说:
pod install
- 用于安装新的 pod,
pod update
- 用于更新现有的 pod,
pod update podName
- 仅更新特定的 pod 而不会触及其他 pod,
pod update podName versionNum
- 用于更新/降级特定 pod 而无需接触其他 pod
你永远不可能得到 100% 的隔离。因为一个 pod 可能有一些共享的依赖关系,如果你尝试更新你的单个 pod,那么它也会更新其他 pod 的依赖关系。如果没问题,那么:
tl;博士使用:
pod update podName
为什么?参见下文。
pod update
不会尊重podfile.lock
. 它将覆盖它——与那个单一的吊舱有关pod install
将尊重podfile.lock
,但会尝试根据其锁定到的版本(在 Podfile.lock 中)安装 podfile 中提到的每个 pod。
此图有助于更好地理解差异:
主要问题来自~>
又名乐观运算符。
使用精确的版本Podfile
是不够的
有些人可能认为,在他们的 中指定他们的 pod 的确切版本Podfile
就pod 'A', '1.0.0'
足以保证每个用户都将拥有与团队中其他人相同的版本。
然后他们甚至可能会pod update
使用Podfile
.
但事实上,这并不足以保证我们上述场景中的 user1 和 user2 将始终获得所有 pod 的完全相同的版本。
一个典型的例子是,如果 pod 对 podA
有依赖关系A2
——声明A.podspec
为dependency 'A2', '~> 3.0'
. 在这种情况下,'A', '1.0.0'
在 Podfile 中使用 pod 确实会强制 user1 和 user2 都始终使用 pod A 的 1.0.0 版本,但是:
- user1 可能以 pod
A2
in version结束3.4
(因为那是当时A2
的最新版本) - 而当 user2
pod install
稍后加入项目时运行时,他们可能会获得 podA2
in version3.5
(因为其维护者A2
可能在此期间发布了新版本)。这就是为什么确保每个团队成员在每个计算机上使用相同版本的所有 pod 的唯一方法是使用Podfile.lock
并正确使用pod install
与pod update
.
以上摘录均来自pod install vs. pod update
我也强烈推荐看看a 做了podfile.lock
什么
只是一个小通知。
pod update POD_NAME
仅当已安装此 pod 时才有效。否则你将不得不用
pod update
命令
我正在使用cocoapods version 1.0.1
和使用pod update name-of-pod
完美的作品。不会更新其他 pod,只会更新您输入的特定 pod。
这有点离群,不太可能是 OP 正在处理的问题,但pod update <podname>
如果您在计算机上使用本地 pod,则并非在所有情况下都有效。
在这种情况下,唯一会触发pod update
工作的是 podspec 文件是否发生更改。但是,进行更改也将允许pod install
工作。
在这种情况下,您只需将描述或摘要等小部分修改一个字母,然后您就可以成功运行 install 或 update 命令。
pod update POD_NAME
将更新最新的 pod 但不更新Podfile.lock
文件。
因此,您可以使用特定版本的 pod 更新您的 Podfile,例如pod 'POD_NAME', '~> 2.9.0'
,然后使用命令pod install
稍后,您可以从 Podfile 中删除特定版本命名,并再次使用pod install
. 这将有助于保持Podfile.lock
更新。