在同一个项目中使用 Carthage 和 CocoaPods

Posted

技术标签:

【中文标题】在同一个项目中使用 Carthage 和 CocoaPods【英文标题】:Using Carthage and CocoaPods in the same project 【发布时间】:2016-04-08 02:58:47 【问题描述】:

我目前正在寻找一个仅支持 Carthage 作为包管理器的库。我希望与之集成的项目已经有一些 CocoaPods 依赖项。有没有人尝试过同时使用这两个管理器?

我觉得这是个坏主意,但我很想知道在实践中是不是这样。

【问题讨论】:

【参考方案1】:

最好使用单个依赖管理器来获得版本处理的最佳体验。您可以要求框架的开发人员支持它。有很多边缘情况,但 CocoaPods 和 Carthage 之间并不冲突,这就是为什么可以同时使用它们的原因

[CocoaPods vs Carthage]

【讨论】:

【参考方案2】:

您将遇到的主要问题是 CocoaPods 和 Carthage 不知道彼此。这意味着如果 CocoaPods 管理的依赖项和 Carthage 管理的依赖项共享一个公共依赖项,可能会出现冲突。

Carthage 要求您手动将框架添加到项目中,这意味着您可能无需链接任何共享依赖项并依赖 CocoaPods 添加的框架,但您不会在两个依赖项管理器中获得依赖项版本解析并且不清楚这一切是如何运作的。

话虽如此,您不能同时使用两者并没有任何内在原因,并且如果您要包含的库具有很少或没有依赖项,则可能仍然更可取的是使用 Carthage 而不是将库包含为子模块甚至复制源代码。

如果可能的话,我的建议是通过 Carthage 包含您的其他依赖项,或者为该库创建一个 podspec,以便您可以独占使用 Carthage 或 CocoaPods。

【讨论】:

这几乎就是我想的......我尝试从两个经理一起安装 deps,并没有遇到任何问题。但我为 Carthage-only 库制作了一个 podspec,因为我希望我的部门以一种方式处理。 另外——如果你的 repo 中有一个 Podfile 并且你使用 Travis-CI,Travis 会假设你想要安装 pod,即使你没有在你的 . travis.yml。如果您只有一个 .podspec,那么 Travis 没有问题,假设您将其设置为运行 carthage update --platform <whatever> @DarrenBlack,您能否分享一下为 Carthage-only 库制作 podspec 的步骤。如果可能的话,您创建的 podspec。

以上是关于在同一个项目中使用 Carthage 和 CocoaPods的主要内容,如果未能解决你的问题,请参考以下文章

【译】Carthage的使用

Carthage

Carthage的安装和使用

让自己的项目支持 Carthage

Azure DevOps 管道中的 Carthage 复制框架失败

SwiftyJson 无法导入在 3.0.2 中使用 Carthage 编译的 Swift 3.1 模块中