我目前正在查看一个仅支持 Carthage 作为包管理器的库。我希望与之集成的项目已经有一些 CocoaPods 依赖项。有没有人尝试同时使用这两个管理器?
我觉得这是个坏主意,但我很想听听在实践中是否是这种情况。
您将遇到的主要问题是 CocoaPods 和 Carthage 不知道彼此。这意味着如果 CocoaPods 管理的依赖项和 Carthage 管理的依赖项共享一个公共依赖项,则可能会出现冲突。
Carthage 要求您手动将框架添加到项目中,这意味着您可能可以不链接任何共享依赖项并依赖 CocoaPods 添加的框架,但您不会在两个依赖项管理器中获得依赖项版本解析并且它赢了不清楚这一切是如何运作的。
话虽如此,您不能同时使用两者并没有任何内在原因,并且如果您要包含的库具有很少或没有依赖项,则可能仍然更可取的是使用 Carthage 而不是将库包含为子模块甚至把源码复制进去。
如果可能的话,我的建议是通过 Carthage 包含您的其他依赖项,或者为该库创建一个 podspec,以便您可以专门使用 Carthage 或 CocoaPods。
使用单个依赖管理器来获得版本处理的最佳体验是一种很好的做法。您可以要求框架的开发人员支持它。有很多边缘情况,但 CocoaPods 和 Carthage 彼此之间并不冲突,这就是为什么可以同时使用它们的原因