【问题标题】:How to install specific pod without touching other dependencies如何在不涉及其他依赖项的情况下安装特定的 pod
【发布时间】:2015-08-03 00:51:47
【问题描述】:

我想使用cocoapods 安装特定的依赖项。如果我执行pod install,其他依赖项会在安装我新添加的依赖项之前得到更新。我只想安装特定的吊舱而不接触任何其他吊舱。而且我知道deletingupdating 任何依赖项都会更新其他依赖项。有没有办法解决这个问题?

实际上我的问题是当我自己修改一些依赖项(例如AFNetworking)并运行pod install 时,它会恢复到原来的版本。但我不想丢失我的更改。

【问题讨论】:

  • 你在更新什么依赖?我会这样做,这样我的项目就可以接受未来的 pod install 命令。
  • pod "AFNetworking", "~> 2.2.1"。在这个依赖中,我自己进行了疯狂的更改,并为项目添加了另一个依赖。当我运行 pod install 时,我在 AFNetworking 中所做的更改正在丢失
  • @ShamsiddinSaidov,你为什么要修改一个 pod?这不是一个好的做法(正是因为更新困难)。如果你真的需要它,更好的方法是 fork AFNetworking,修改你自己的 fork,然后安装你的 fork,而不是原来的 AFNetworking 库。几天前我在这里的某个地方看到了一个关于它的问题。
  • 是的,你是对的,但无论如何如果我不想更新我现有的 Pod,解决方案是什么?假设我的项目适用于旧版本的 pod,它不应该更新到新版本?
  • @ShamsiddinSaidov,您可以像这样明确地编写版本:pod 'AFNetworking', '2.2.1'

标签: ios objective-c cocoapods


【解决方案1】:

在这里,您可以使用以下命令跳过在 Xcode 项目中集成 Pods 库。

pod install --no-repo-update

Pod install

希望对您有所帮助。

【讨论】:

  • @Shamsiddin Saidov,这个命令只会添加之前没有集成的新pod。
  • 它没有帮助。 pod install --no-repo-update 也在更新现有的 pod
  • 我的项目中集成了 AFNetworking,并修改了其中的一些类。当我添加另一个 pod 时,说 pod 'Facebook-iOS-SDK', '~> 4.1' 并运行 pod install --no-integrate 它会将我修改后的 AFNetworking 类恢复为其原始版本。 IE。它会在安装 Facebook-iOS-SDK 之前更新我已经安装的依赖项
  • --no-integrate 已过期。
【解决方案2】:

在撰写本文时, pod install 只会安装 PodFile 中尚未安装的 pod。其他的不会更新。 CocoaPods 项目似乎已经解决了这个问题。

【讨论】:

  • 当 Cocoapods 本身有重大修订更新时,情况似乎并非如此......即版本 1.0.0 刚刚发布,但因为它显然是一个主要版本,它试图更新所有 pod最新,即使在命令行中指定其他方式 - 至少在我的情况下就是这样
【解决方案3】:

在安装前跳过运行的 pod repo 更新。使用

pod install --no-repo-update

【讨论】:

  • 这仍然会更新其他 pod,因为我试图跳过更新用于 xcode 8.3.3 的其他 pod,现在在迁移到 xcode 9 后,它们没有像以前的 xcode 版本那样进行转换.
【解决方案4】:

要安装插件而不更新现有插件-> 将该插件添加到您的 Podfile 中并使用:

pod install --no-repo-update

要删除/更新特定插件,请使用:

pod update POD_NAME

测试过!

【讨论】:

  • 起初看起来有点奇怪,但这就像 atulkhatri 在删除单个库时提到的那样。从您的 pod 文件中删除该项目并运行更新podname
  • @skymook 不适合我删除 FacebooCore 库:(
  • @Niki 我对“FacebookCore”有同样的问题。你找到解决办法了吗?
  • @YogendraPatel 有可能一些其他第三方框架已添加到旧版本的 Facebook SDK 作为依赖项。请检查您的Podfile.lock 看看是不是这样?
  • 这似乎仍然会干扰已安装的其他 Pod。
【解决方案5】:

这是另一种方法。如果您想安装新添加的 pod 并且不想更新其他依赖项,则需要从您不想更新的所有 pod 中删除“~>”。 例如在 AFNetworking 的情况下

pod 'AFNetworking', '2.2.1'   instead of pod 'AFNetworking',~> '2.2.1' 

【讨论】:

    【解决方案6】:

    如果你的项目文件夹中有你的第一个“Podfile.lock”,你只需要使用

    pod install
    

    您的“Podfile.lock”已注册旧 pod 的版本,因此您无需执行其他操作

    【讨论】:

    • 这不是 OP 所要求的。问题是如何在 podfile 中只安装一个新添加的 POD,而不是像 pod install 那样更新来自 repo 的所有 pod。
    【解决方案7】:

    不要混淆,只需打开现有文件并在现有 pod 下方添加 pod 文件的数量即可。

    然后,转到终端并打开您的项目并运行命令:

    $ pod 安装

    (此命令只会添加到新的 pod 上,不会影响现有的 pod)

    【讨论】:

      【解决方案8】:
      pod repo update && pod update 'YOURPOD'
      

      【讨论】:

        【解决方案9】:

        1) 如果要更新单个 pod

        pod update 'yourpodname'

        2) 如果你想安装一个 pod 而不影响另一个 pod

        pod install --no-repo-update

        3)如果你想安装/更新特定版本的 pod

        pod 'Stripe', '3.0'

        4) 如果你想安装/更新 pod 的最新版本而不是

        pod 'KCFloatingActionButton'

        【讨论】:

        • pod install --no-repo-update 已过时,无法正常工作....还有其他解决方案吗?
        猜你喜欢
        • 2018-10-20
        • 2018-07-23
        • 2014-12-08
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2018-06-03
        • 2014-01-21
        • 2021-09-21
        相关资源
        最近更新 更多