我的公司为iOS应用程序创建了一个静态库。对于开发人员来说,一个令人烦恼的步骤是他们必须手动链接库所使用的所有必需框架,否则会导致编译器错误有些混乱。
我以前认为这是不可能的,但Chartboost公司向AdSupport和StoreKit声称automatically link against non-default frameworks。基于我在他们的示例应用程序中的测试(可从链接页面获得),到目前为止似乎是这种情况(即使在链接静态库的应用程序中禁用“启用模块”和“自动链接框架”)。 / p>
创建静态库时是否有某种方法可以启用此功能?我已经尝试在Xcode中启用模块和“自动链接框架”LLVM选项,但到目前为止还没有能够使它工作。
答案 0 :(得分:3)
在进行函数或方法调用之前,有一段名为CBDynamicallyLoadedDependencies
的代码在相应的系统库上调用 dlopen()
。
我的原始答案不正确。 dlopen()
调用只是在x86代码中。在设备上,它有所不同,但我的ARM组件不够强大,无法弄明白。我只能说,有一段代码可以作为所需功能的蹦床,并引用系统库文件(如/System/Library/Frameworks/AdSupport.framework/AdSupport)。
但关键是,这不是一个简单的项目技巧,使其正常工作。涉及内部代码。
答案 1 :(得分:0)
他们可能会使用您提到的模块和@import而不是#import,这会使库自动链接。
供参考,请查看this问题。
答案 2 :(得分:-2)
这可能不是你想要的,但如果你还没有支持Cocoapods,我强烈建议你去看看:
(编辑:Cocoapods基本上与Xcode相关联。其他IDE需要另一种解决方案。)
您可以向开发人员宣传Cocoapods作为使用库的“简单”方式,以及手动方法......以及手动方法。 ;)
我不知道任何行业对Cocoapods的抵制,所以我认为不支持它的缺点,它确实解决了你所谈论的问题(尽管以一种迂回的方式)。
此外,我发现Chartboost非常适合开发人员。你甚至可以联系他们并询问。