Cocoa 如何在不涉及其他依赖项的情况下更新单个pod

Cocoa 如何在不涉及其他依赖项的情况下更新单个pod,cocoa,cocoapods,podfile,pod-install,Cocoa,Cocoapods,Podfile,Pod Install,我知道以下命令将更新单个pod:pod update。但是,这也会更新您以前安装的其他POD(更新命令中未包含的POD)的依赖项。有没有一种方法可以更新一个pod,而不去理会所有其他依赖项?确保安装了最新版本的CocoaPods $pod update PODNAME最近推出 见: $pod更新 运行pod update SomePodName时,CocoaPods将尝试查找pod SomePodName的更新版本,而不考虑Podfile.lock中列出的版本。它会将pod更新为可能的最新版本(

我知道以下命令将更新单个pod:
pod update
。但是,这也会更新您以前安装的其他POD(更新命令中未包含的POD)的依赖项。有没有一种方法可以更新一个pod,而不去理会所有其他依赖项?

确保安装了最新版本的CocoaPods

$pod update PODNAME
最近推出

见:

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

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

只是一个小小的通知

pod update POD_NAME
只有在已安装此pod的情况下才能工作。否则,您将不得不使用

pod update
指挥部

现在是2015年 因此,由于
pod update SomePod
触及了最新版本cocoapods中的所有内容,我找到了一个解决方法

请执行以下步骤:

  • pod文件中删除
    SomePod

  • 运行
    pod安装

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

  • SomePod
    放回
    pod文件中

  • 再次运行
    pod安装


  • 这一次,我们的pod的最新版本将被安装并保存在
    pod文件中。锁定
    以安装单个pod而不更新现有pod->将该pod添加到您的pod文件中并使用:

    pod install --no-repo-update
    
    pod update POD_NAME
    
    要删除/更新特定pod,请使用:

    pod install --no-repo-update
    
    pod update POD_NAME
    

    测试

    我使用的是
    cocoapods 1.0.1版
    ,使用
    pod更新pod的名称
    非常有效。没有更新其他pod,只更新您输入的特定pod。

    这有点离群,不太可能是OP正在处理的问题,但是如果您在计算机上使用本地pod,
    pod更新在所有情况下都不起作用

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

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

    只需说:

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

    pod更新
    -用于更新现有pod

    pod update podName
    -只更新特定的pod而不接触其他pod


    pod update podName versionNum
    -要在不接触其他pod的情况下更新/降级特定pod,您永远无法获得100%的隔离。因为一个pod可能有一些共享的依赖项,如果您尝试更新您的单个pod,那么它也会更新其他pod的依赖项。如果可以,那么:

    tl;dr用途:

    pod update podName
    
    为什么??阅读下面的内容

    • pod update
      将不尊重
      pod文件.lock
      。它将覆盖它-与单个吊舱有关
    • pod install
      将尊重
      podfile.lock
      ,但将根据其锁定的版本(在podfile.lock中)尝试安装podfile中提到的每个pod
    此图有助于更好地理解差异:


    主要的问题来自于市场

    Podfile
    中使用精确版本是不够的 有些人可能认为,在
    pod文件中指定其pod的确切版本,如
    pod'A',1.0.0'
    ,足以保证每个用户都拥有与团队中其他人相同的版本

    然后,他们甚至可能使用
    pod update
    ,即使只是添加一个新的pod,他们也会认为这不会有更新其他pod的风险,因为它们在
    pod文件中固定为特定版本

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

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

    • 用户1可能会在版本
      3.4
      中使用pod
      A2
      (因为那是
      A2
      当时的最新版本)
    • 当user2在以后加入项目时运行
      pod install
      时,他们可能会在
      3.5
      版本中获得pod
      A2
      (因为
      A2
      的维护者可能同时发布了一个新版本)。 这就是为什么确保每个团队成员使用计算机上所有pod的相同版本的唯一方法是使用
      Podfile.lock
      并正确使用
      pod install
      而不是
      pod update
    以上摘录均来源于


    我还强烈建议观看

    pod更新pod\u NAME
    将更新最新的pod,但不会更新
    Podfile.lock
    文件

    因此,您可以使用pod的特定版本更新pod文件,例如
    pod'pod_NAME'、“~>2.9.0”
    ,然后使用命令
    pod install

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