将二进制链接与库VS嵌入框架


77

将框架放入“使用库链接二进制”或“嵌入框架”之间,在构建阶段有什么区别?


47
我投票重新提出这个问题,但范围并不广泛,我自己找到了这个选项,就像是“这是什么?为什么需要它?” 它直接比较XCode中的两个选项,而且它们都很奇怪。好像在说“你要绑你的鞋子,或嵌入绑你的鞋子的行为-这是很混乱的。
斯蒂芬Ĵ

Answers:


41

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

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

--

时间轴 (看这句话) - “如果包含应用程序的目标您链接嵌入式框架,它必须包括arm64架构,否则将通过App Store的拒绝。”


5

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

无论如何,如果我们想使用任何框架资源(即API),我们都需要链接到它。在这种情况下,我们需要将其添加到“常规目标设置”底部的“链接的框架和库”部分。

如果我们嵌入库,则将使用我们的应用程序包按原样运送该库。例如,在运行macOS的计算机上肯定没有特定的第三方库的情况下,这可能很方便。

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

那是一个特殊的构建阶段起作用的地方。在“构建阶段”下的项目设置中,有带有库的链接二进制文件部分。此步骤从胖框架中剥离不必要的部分,并将必要的部分留在捆绑包中,以便它能够在与应用程序依赖项无关的设备上运行。


但是,如果你只需要导入AVFoundation在应用它神秘的联系,因为苹果自己的AVCam样品中所看到的
安迪·登特

2

对于应用目标

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]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.