我知道下面的命令将更新一个pod: pod update <podname>。然而,这也会更新你之前安装的其他pod(没有包含在update命令中的pod)的依赖关系。是否有一种方法可以更新单个pod而不影响所有其他依赖?
pod update <podname>
确保安装了最新版本的CocoaPods。
$ pod update PODNAME是最近引入的。
$ pod update PODNAME
看到更多信息请参阅此问题线程:
$ pod更新 当你运行pod update SomePodName时,CocoaPods将尝试找到pod SomePodName的更新版本,而不考虑Podfile.lock中列出的版本。它会将pod更新到最新版本(只要它与Podfile中的版本限制相匹配)。 如果您运行pod update而没有任何pod名称,CocoaPods将把Podfile中列出的每个pod更新到最新版本。
当你运行pod update SomePodName时,CocoaPods将尝试找到pod SomePodName的更新版本,而不考虑Podfile.lock中列出的版本。它会将pod更新到最新版本(只要它与Podfile中的版本限制相匹配)。
pod update SomePodName
Podfile.lock
如果您运行pod update而没有任何pod名称,CocoaPods将把Podfile中列出的每个pod更新到最新版本。
只是一个小通知。
pod update POD_NAME
将工作,只有当这个豆荚已经安装。否则,您将不得不更新所有这些
pod update
命令
所以,因为pod update SomePod涉及cocoapods最新版本的所有内容,我找到了一个变通方法。
pod update SomePod
请遵循以下步骤:
从Podfile . xml文件中删除SomePod
Podfile
SomePod
运行pod install
pod install
pods现在将从我们的项目和Podfile.lock文件中删除SomePod。
将SomePod放回Podfile
再次运行pod install
这一次,我们的pod的最新版本将被安装并保存在Podfile.lock。
要安装一个单独的pod而不更新现有的->将该pod添加到您的Podfile并使用:
pod install --no-repo-update
删除/更新特定的pod使用:
测试!
我使用cocoapods version 1.0.1和使用pod update name-of-pod工作完美。不会更新其他pod,只更新您进入的特定pod。
cocoapods version 1.0.1
pod update name-of-pod
这是一个异常值,不太可能是OP正在处理的,但pod update <podname>将不会在所有情况下工作,如果你在你的计算机上使用本地pod。
在这种情况下,唯一能触发pod update工作的是podspec文件中的变化。然而,做一些改变也会允许pod install工作。
在这种情况下,您可以只修改一些较小的内容,例如只修改一个字母的描述或摘要,然后就可以成功地运行install或update命令。
只是说:
pod install -用于安装新的pods,
pod update -用于更新现有的pods,
pod update podName -用于只更新特定的pod而不触及其他pod,
pod update podName
pod update podName versionNum -用于更新/降级特定的pod而不接触其他pod
pod update podName versionNum
你不可能得到100%的隔离。因为一个pod可能有一些共享依赖项,如果你试图更新你的单个pod,那么它也会更新其他pod的依赖项。如果可以,那么:
tl;博士使用:
为什么?阅读下面。
podfile.lock
下面的图表有助于更好地理解两者的区别:
主要问题来自~>又名乐观运算符。
~>
有些人可能认为在Podfile中指定他们的pod的确切版本,如pod 'A', '1.0.0',足以保证每个用户与团队中的其他人拥有相同的版本。
pod 'A', '1.0.0'
然后他们甚至可能使用pod update,即使只是添加一个新的pod,认为它永远不会冒险更新其他pod,因为它们被固定到Podfile中的特定版本。
但实际上,这并不足以保证上述场景中的user1和user2总是获得它们所有pod的完全相同版本。
一个典型的例子是,如果pod A依赖于pod A2——在A.podspec中声明为dependency 'A2', '~> 3.0'。在这种情况下,在Podfile中使用pod 'A', '1.0.0'确实会迫使user1和user2始终使用pod A的1.0.0版本,但是:
A
A2
A.podspec
dependency 'A2', '~> 3.0'
'A', '1.0.0'
3.4
3.5
上面的节选全部来自Pod安装vs. Pod更新
我也强烈推荐观看podfile.lock做什么
pod update POD_NAME将更新最新pod,但不更新Podfile.lock文件。
所以,你可以用你的pod的特定版本更新你的Podfile,例如pod 'POD_NAME', '~> 2.9.0',然后使用命令pod install
pod 'POD_NAME', '~> 2.9.0'
稍后,您可以从Podfile中删除特定的版本命名,并可以再次使用pod install。这将有助于保持Podfile.lock的更新。