Łuk*_*mek 16 linker frameworks static-libraries ios
我使用这种方法创建了iOS Framework项目:https://github.com/jverkoey/iOS-Framework
工作非常简洁,但我对如何包含我的框架工作所需的库/框架有点困惑,特别是如何做到这一点,以便在使用我的框架的第三方客户端应用程序可以包含这些库也没有冲突.
假设我的框架代码需要这两件事:
第一个是iOS框架.当我将它添加到我的框架中的"Link Binary With Libraries"阶段并尝试编译使用我的框架的客户端项目时,链接器抱怨缺少符号 - 我需要将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
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
que*_*ish 17
对于您正在描述的用例,您应该从应用程序链接到这些外部库,而不是您自己的框架.它可以是一个或另一个,但不能两者兼而有之.
如果您认为这些依赖项属于应用程序的责任,您可以将它们从"Link Binary With Libraries"和任何其他显式链接配置中删除,并将框架项目与这些框架和库的路径一起投影,以便它可以找到编译时的符号(但不是链接它们)(即库的路径应包含在LIBRARY_SEARCH_PATHS中).