我知道下面的命令将更新一个pod: pod update <podname>。然而,这也会更新你之前安装的其他pod(没有包含在update命令中的pod)的依赖关系。是否有一种方法可以更新单个pod而不影响所有其他依赖?


当前回答

我使用cocoapods 1.0.1版本,并使用pod更新pod名称完美地工作。不会更新其他pod,只更新您进入的特定pod。

其他回答

我使用cocoapods 1.0.1版本,并使用pod更新pod名称完美地工作。不会更新其他pod,只更新您进入的特定pod。

只是说:

吊舱安装-用于安装新的吊舱,

Pod更新-用于更新现有的Pod,

pod更新podName -只更新特定的pod而不涉及其他pod,

pod update podName versionNum -用于更新/降级特定的pod,而不涉及其他pod

你不可能得到100%的隔离。因为一个pod可能有一些共享的依赖项,如果你试图更新你的单个pod,那么它也会更新其他pod的依赖项。如果可以,那么:

tl;博士使用:

pod update podName

为什么?阅读下面。

pod更新将不尊重podfile.lock。它将覆盖它-有关的单一豆荚 Pod安装将尊重podfile。但是会尝试安装podfile中提到的每个pod,基于它锁定的版本(在podfile .lock中)。

下面的图表有助于更好地理解两者的区别:


主要问题来自~>也就是乐观操作符。

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

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

然后他们甚至可能使用pod更新,即使只是添加一个新的pod,认为它永远不会冒险更新其他pod,因为它们被固定到Podfile中的特定版本。

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

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

user1可能会在3.4版本中使用pod A2(因为这是当时A2的最新版本) 而当用户2在加入项目时运行pod install时,他们可能会在3.5版本中获得pod A2(因为A2的维护者可能在此期间发布了新版本)。 这就是为什么确保每个团队成员在每个人的电脑上使用相同版本的pod的唯一方法是使用Podfile。锁定并正确使用pod安装和pod更新。

上面的摘录都来自pod安装和pod更新

我也强烈建议你看看播客是怎么做的。锁做

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

$ pod更新PODNAME最近被引入。

有关更多信息,请参阅此问题线程:

$ pod更新 当你运行pod更新SomePodName时,CocoaPods会尝试找到pod SomePodName的更新版本,而不考虑Podfile.lock中列出的版本。它会将pod更新到最新版本(只要它与Podfile中的版本限制相匹配)。 如果您运行pod update而没有任何pod名称,CocoaPods将把Podfile中列出的每个pod更新到最新版本。

这是一个异常值,不太可能是OP正在处理的问题,但是如果您在计算机上使用本地pod, pod update <podname>将在所有情况下都不起作用。

在这种情况下,只有在podspec文件发生更改时才会触发pod更新。但是,做一些改变也可以让吊舱安装正常工作。

在这种情况下,您可以只修改一些较小的内容,例如只修改一个字母的描述或摘要,然后就可以成功地运行install或update命令。