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


当前回答

只是一个小通知。

pod update POD_NAME

将工作,只有当这个豆荚已经安装。否则,您将不得不更新所有这些

pod update

命令

其他回答

POD_NAME将更新最新的pod,但不更新Podfile。锁文件。

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

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

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

$ pod更新PODNAME最近被引入。

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

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

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

只是一个小通知。

pod update POD_NAME

将工作,只有当这个豆荚已经安装。否则,您将不得不更新所有这些

pod update

命令

只是说:

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

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

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

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