【发布时间】:2014-02-10 12:35:00
【问题描述】:
虽然我看到很多关于 Cocoapods 和静态库的问题,但其中大多数似乎都假设您最终将拥有一个包含静态库和最终目标应用程序的工作区。
在我的场景中,我正在构建一个静态库。更具体地说,我正在破解一个 MyLib.framework 供用户使用。我真的想用 Cocoapods 管理 MyLib.framework 的依赖关系,但是当我的库的消费者也使用 Cocoapods 时,它会产生很多痛点。
例如,我的库有一个 AFNetworking 依赖项,我使用 Cocoapods 管理它。当我构建我的库时,它会链接到包含 AFNetworking 的 libPods.a 以及一些“虚拟”文件/对象。如果我的框架的用户也使用 Cocoapods 来构建他们的应用程序,他们会看到如下内容:
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
/Users/erikkerber/Dropbox/Projects/MillMain/MyLib.framework/BuddySDK(Pods-dummy.o)
/Users/erikkerber/Library/Developer/Xcode/DerivedData/MillMain-fngfqhlslygksgcfuciznkpqfrbr/Build/Products/Debug-iphonesimulator/libPods.a(Pods-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods in:
/Users/erikkerber/Dropbox/Projects/MillMain/MyLib.framework/BuddySDK(Pods-dummy.o)
/Users/erikkerber/Library/Developer/Xcode/DerivedData/MillMain-fngfqhlslygksgcfuciznkpqfrbr/Build/Products/Debug-iphonesimulator/libPods.a(Pods-dummy.o)
ld: 2 duplicate symbols for architecture i386
我想如果他们要添加一个 AFNetworking 依赖项,他们也会得到与 AFNetworking 相关的重复符号。
我计划最终也将 MyLib 与 Cocoapods 一起分发,但我也希望能够分发 MyLib.framework 本身。
有什么方法可以在我的库中使用 Cocoapods,同时确保 Cocoapods 对任何潜在用户都是安全的?
【问题讨论】:
-
您打算分发框架的源代码,还是只分发二进制文件?
-
@StefanFisk 它将是开源的,但对于简单的情况,我希望允许用户简单地下载 MyLib.framework,并且只有在他们想要自定义它时才进入源代码。
标签: ios objective-c static-libraries cocoapods