使用cocoapods管理静态库中的依赖关系

我在一个应用程序中使用CocoaPods,其中工作区由一个主应用程序项目和一些静态库作为子项目组成,每个子项目都有自己的依赖关系。 静态库在编译时链接到主项目中,主要作为封装和组织代码的手段存在。

CocoaPods将依赖项链接到子项目的静态库中会出现问题。 如果这两个或多个静态库具有相同的依赖关系,则它们都不能链接到主项目中,因为这样做会导致重复的符号。

我目前的解决方法是在每个子项目中创建一个“虚拟”目标,并将其设置为pod文件中的链接目标。 真正的目标使用CocoaPods生成的xcconfig文件,而不需要链接任何依赖关系。

尽管这确实有效,并且是我能找到的最简单的解决方案,但它仍然带来了在每个项目中都有虚拟目标的额外不必要的负担,例如:

xcodeproj 'MyApp/MyApp.xcodeproj'
target :'MyApp' do
    xcodeproj 'MyApp/MyApp.xcodeproj'

    pod 'MBProgressHUD',            '0.9'

    link_with 'PodDummy'
end

这种方法的另一个缺点是,仍然需要在主项目中指定所有依赖关系,以便它们与最终的可执行文件链接。


所以我的问题是:如何在一个静态库项目中使用CocoaPods,而无需将依赖关系链接到二进制文件中?

或者更好的是:我可以只在静态库子项目中指定依赖项,并让CocoaPods找出需要在主项目中链接哪些内容,解决过程中的重复项?

我正考虑只在pod文件中包含主项目,并让子项目手动引用标题的“Pods”目录。

过去似乎已经围绕这个问题进行了一些讨论,但是我不明白它是什么,如果有的话。 相关的讨论是:

  • https://github.com/CocoaPods/CocoaPods/issues/1335
  • https://github.com/CocoaPods/CocoaPods/issues/840
  • iOS静态库+ CocoaPods和重复符号错误
  • 猕猴桃和CocoaPods与静态共享库

  • CocoaPods适用于使用豆荚的人。 当你开发豆荚时,或者更糟糕的是,当你开发一个应用程序以及(a)所有豆荚...(也可能取决于豆荚)时,使用它会困难得多。

    你必须知道的是CocoaPods在这里解决依赖关系。 你的问题在我看来,你已经在你的工作区中开启了你的pod,完全绕过了这个特性! 当然,如果您在项目目录中执行“pod install”,则只会产生一堆依赖项,Pod将根据Podfile进行安装,而您自己的pod代码库位于同一文件夹树中。

    我所做的是分开开发豆荚(可能与否取决于其他豆荚)。 不在同一个应用程序的“工作区”中也是一种很好的做法。 您可以使用演示应用程序开发您的Pod。

    在主应用程序的目录中,我在Podfile中指出了我自己的Pod的“开发”分支。 因此,该应用程序正在开发与豆荚的倾向,就好像这些豆荚正式发布。 除了它们也只是在开发中。

    当然,它强迫你分开分开,当你需要改变你的应用程序的pod代码时,这并不是那么好。

    两种可能性(他们都不是很好)。 首先,更换您的吊舱,然后在您的应用程序文件夹中进行“吊舱更新”。

    其次,将pod代码直接播放到应用工作区中(pod代码已由pod update命令导入)。 并且一旦满足,将修改返回到用于提交的原始pod代码。

    很多来回,但我没有找到比这更好的。

    链接地址: http://www.djcxy.com/p/48299.html

    上一篇: Managing dependencies in static libraries with cocoapods

    下一篇: How to decrease build times / speed up compile time in XCode?