iOS框架嵌入式二进制文件

时间:2015-04-30 10:14:59

标签: ios frameworks

我能够为Xcode创建iOS Framework,如该视频所示: -

https://youtu.be/86cPaa3FrRg?t=4m55s

在5:00他们说必须将框架添加到Embeded Binaries。 如果我将它添加到Embeded Binaries然后它可以工作。

不需要将GoogleAds.framework添加到Embeded Binaries。 添加到嵌入式二进制文件看起来有点" hacky"与Googles解决方案相比。 所以我认为本教程缺少一些步骤。

我的问题是:如何在不将其添加到嵌入二进制文件的情况下创建一个有效的框架?

2 个答案:

答案 0 :(得分:12)

tl; dr 它们都是框架,但它们是不同的类型。

“框架”一词含糊不清。在OSX上它意味着一个打包的动态库(即.dylib,标题,其他东西),但是在iOS 8之前用户无法创建动态库,因此发明了“静态框架”来提供打包的静态库(即{{1} },标题,其他东西)。

如果您创建的框架需要与应用程序一起打包为嵌入式二进制文件,那么它听起来就像一个动态框架,但如果Google广告没有,那么我怀疑它是一个静态框架。它不需要嵌入,因为它已经链接到应用程序二进制文件。

如果您想知道如何创建静态框架,请启动here或Google以获取“ios静态框架”。

答案 1 :(得分:9)

在iOS 8之前,开发人员发布了不受支持的框架,这些框架通过模仿Apple框架的目录结构与静态库拼凑在一起。他们工作,但他们很难建立,他们是static - 而不是动态库。

从iOS 8开始,Apple正式支持在Xcode中构建第三方动态框架。这些类型的框架是代码签名的,必须放在您的应用程序的嵌入式二进制文件中。如果您链接它们但未能将它们放入嵌入式二进制文件中,则在尝试在设备上运行时会出现异常并且您的应用程序将崩溃。

从长远来看,我希望像GoogleAds.framework这样被黑客攻击的框架在官方框架支持可用时消失。这意味着您将不得不习惯将框架放入嵌入式二进制文件中。

除非你需要用你的代码支持iOS 7(在这种情况下官方框架不是一个选项,因为它们只适用于iOS 8),我建议不要在此时创建一​​个不受支持的框架类型。