"在“链接二进制文件”或“嵌入框架”中放置框架的构建阶段有什么区别?"
"在“链接二进制文件”或“嵌入框架”中放置框架的构建阶段有什么区别?"
链接库文件 将框架和库与项目的目标文件链接起来生成二进制文件。您可以将目标源文件与目标的活动SDK中的库或外部库链接。
嵌入式框架 您可以创建一个嵌入式框架,以在应用程序扩展和其包含的应用程序之间共享代码。
-
时间表 (查看此句话) - "如果您的包含应用程序目标链接到一个嵌入式框架,则它必须包括arm64架构,否则将被App Store拒绝。"
iOS 链接(Link) vs 嵌入(Embed)
对于一个应用程序目标:
Xcode 11
静态库
静态框架
- 不嵌入
动态框架
- 嵌入
Xcode 11之前
静态库
- 链接
静态框架
- 链接
动态框架
- 嵌入
如何工作?请参见 [Xcode v11] 和 [pre Xcode v11]
我一直在查看一些答案,如果有人再次遇到这个问题,我想修改一下我的学习。
无论如何,如果我们想使用框架的任何资源(例如API),我们需要链接它。在这种情况下,我们需要将其添加到“常规目标设置”底部的“已链接的框架和库”部分中。
如果我们嵌入一个库,我们将该库与我们的应用程序捆绑在一起,就像它是一样。这在运行 macOS 的机器上非常方便,因为它们肯定没有特定的第三方库。
那么iOS呢?iOS设备本身没有安装第三方库的可能性,而且Apple对于大型框架(为多个平台构建的库)非常严格。那么库仍然必须被传递?由于仅仅将它们链接起来对于我们应用程序的用户来说是不够的,那么我们还有哪些其他可能性?
这就是一个奇特的构建阶段发挥作用的地方。在项目设置下的“构建阶段”中,有一个链接二进制文件的库部分。此步骤会从大型框架中剥离不必要的部分,并将必要的部分留在捆绑包中,以便在不关心应用程序依赖项的设备上运行。
AVFoundation
,它将会自动链接,就像在苹果自己的AVCam示例中所看到的那样。 - Andy Dent