我使用以下方法创建了iOS框架项目:https://github.com/jverkoey/iOS-Framework
这个方法非常好用,但是我有点困惑,不知道如何包含我的框架所需的库/框架,特别是如何做到第三方客户端应用程序在使用我的框架时也可以包含这些库而不会出现冲突。
假设我的框架代码需要以下两个东西:
- FacebookSDK.framework
- libFlurry.a
第一个是iOS框架。当我将它添加到我的框架的“链接二进制文件与库”阶段并尝试编译使用我的框架的客户端项目时,链接器会抱怨缺少符号-我需要将FacebookSDK添加到客户端项目中,这很好:如果客户端应用程序想要使用Facebook,就没有可能发生冲突。
然而,当我对Flurry静态库执行相同操作时,在编译客户端项目时会出现重复的符号错误,这让我感到困惑,因为FacebookSDK.framework难道不只是一个打包的静态库吗?
ukaszs-iMac:FacebookSDK.framework lukasz$ file Versions/A/FacebookSDK
Versions/A/FacebookSDK: Mach-O universal binary with 3 architectures
Versions/A/FacebookSDK (for architecture i386): current ar archive random library
Versions/A/FacebookSDK (for architecture armv7): current ar archive random library
Versions/A/FacebookSDK (for architecture cputype (12) cpusubtype (11)): current ar archive random library
所以我的问题是:
- 为什么嵌入在框架中的库(比如Facebook)没有链接到我的框架项目产品,而作为.a文件包含的库则有链接?
- 如何将.a文件包含在我的框架中,以便当客户端应用程序使用我的框架时也需要这个特定的静态库时,不会产生重复符号错误?