iOS框架中的嵌入式二进制文件

24
我能够像视频中展示的那样为Xcode创建iOS框架:

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

在5:00的时候,他们说必须将框架添加到嵌入式二进制文件中。如果我将其添加到嵌入式二进制文件中,则可以正常工作。
不需要将GoogleAds.framework添加到嵌入式二进制文件中。与Google的解决方案相比,将其添加到嵌入式二进制文件中看起来有点“hacky”。所以我认为这个教程缺少了一些步骤。
我的问题是:如何使一个框架在不添加到嵌入式二进制文件中的情况下正常工作?

1
你能否重新表达一下你的问题?我相信你想问的是:“如何制作一个不需要添加到嵌入式二进制文件中就能正常工作的框架?” - pteofil
是的,这正是我所询问的。 - Tema
2个回答

13

简介它们都是框架,但是它们是不同类型的。


术语“框架”含义不确定。在OSX上,它指的是打包的动态库(即.dylib,头文件和其他内容)。然而,在iOS 8之前,用户不能创建动态库,因此发明了“静态框架”以提供打包的静态库(即.a,头文件和其他内容)。

如果您创建的框架需要作为嵌入式二进制文件与应用程序一起打包,则听起来像是一个动态框架,但如果Google Ads不需要,则我认为它是一个静态框架。 它不需要被嵌入,因为它已经被链接到应用程序二进制中。

如果您想知道如何创建静态框架,请从此处开始,或者搜索“ios静态框架”。


1
谢谢!你是第一个提供游戏解决方案的人。 - Tema

9
在iOS 8之前,开发者使用静态库通过模仿苹果框架的目录结构来拼凑不受支持的框架。虽然这些框架能够工作,但是构建过程比较麻烦,而且它们是静态库,而非动态库。
从iOS 8开始,苹果官方支持在Xcode中构建第三方动态框架。这些类型的框架是经过代码签名的,必须放置在应用程序的嵌入式二进制文件中。如果您链接这些框架但未将它们放置在嵌入式二进制文件中,则在尝试在设备上运行时会出现异常,并且您的应用程序将崩溃。
从长远来看,我希望像GoogleAds.framework这样的拼凑框架将消失,因为现在已经有了官方框架支持。这意味着您需要习惯将框架放置在嵌入式二进制文件中。
除非您需要支持iOS 7(在这种情况下,官方框架不是一个选项,因为它们只适用于iOS 8),否则我建议您不要创建不受支持的框架类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接