Link Binary与库VS Embed Frameworks

Alb*_*iti 66 xcode frameworks

将框架放入"链接二进制文件库"或"嵌入框架"之间的构建阶段有何不同?

Jak*_*lář 38

链接二进制文件库将 框架和链接到项目的目标文件以生成二进制文件.您可以将目标的源文件链接到目标的活动SDK中的库或外部库.

嵌入框架 您可以创建嵌入式框架,以在应用扩展程序及其包含的应用程序之间共享代码.

-

时间轴 (看看这句话) - "如果您的包含应用目标链接嵌入式框架,它必须包含arm64架构,否则它将被App Store拒绝."

  • 谢谢.还要感谢那个投票的人:-) (2认同)

yoA*_*ex5 7

iOS 链接与嵌入

对于应用程序目标

Xcode 11

  • Static Library
  • Static Framework-Do Not Embed
  • Dynamic Framework-Embed

Xcode 11 之前的版本

  • Static Library-Link
  • Static Framework-Link
  • Dynamic Framework-Embed

它是如何工作的[Xcode v11][Xcode v11 之前的版本]


ff1*_*f10 5

我一直在这里和那里寻找一些答案,如果有人再次遇到这个问题,我想修改这个学习。

在任何情况下,如果我们想使用任何一个框架资源(即 API),我们都需要链接到它。在这种情况下,我们需要将它添加到 General Target Settings 底部的“Linked Frameworks and Libraries”部分。

如果我们嵌入了一个库,我们就是在随我们的应用程序包一起发送这个库。这可能很方便,例如在运行 macOS 的机器上当然没有特定的 3rd 方库。

那么,iOS呢?不可能在 iOS 设备上安装 3rd 方库本身——而且 Apple 对胖框架(为多个平台构建的库)非常严格。那么无论如何必须有一种方法可以交付图书馆?既然仅仅链接它们对于我们应用程序的用户来说是不够的,我们还有什么其他可能性?

这就是一个特殊的构建阶段发挥作用的地方。在 Build Phases 下的项目设置中,有带有库部分的链接二进制文件。此步骤从胖框架中去除了不必要的部分,并将必要的部分留在包中,以便它能够在不知道应用程序依赖项的设备上运行。