嵌入式二进制文件和链接框架之间有什么区别

Max*_*ler 79 xcode frameworks ios carthage xcode7

使用外部框架时,Xcode现在有一个嵌入式二进制文件链接框架部分.

在此输入图像描述

当您下载外部框架和Finder->将其拖入Xcode时,它会将框架放入Linked Frameworks and Libraries部分.

当您使用Carthage构建库时,建议您拖入嵌入式二进制文件部分.

两者似乎都在链接方面起作用,因为API可用于任何一种方式,在嵌入式二进制文件部分中添加框架时,它也会自动添加到" 链接的框架和库"部分中.

那么,谁是对的?迦太基或其他互联网?为什么有两个选项可以将外部资源包含到Xcode项目中?

Shr*_*ada 64

  1. 链接 - 如果我们使用其中定义的任何API,我们必须链接一个框架.

  2. 嵌入 - 此过程将确保添加的框架将嵌入到应用程序包中,并可能有助于在应用程序和任何扩展程序包之间共享代码.我们只嵌入了第三方框架,而不是iOS提供的框架,因为它们可以在设备中随时使用.如果我们嵌入,这意味着,我们也需要链接到它们,以便Xcode可以编译和创建构建.当应用程序在设备中运行时,嵌入式框架将在需要时加载到内存中.


小智 14

如果您嵌入二进制文件,它将包含在您的产品中.如果您只链接库或框架而不嵌入它,它将不属于您的产品.

但是,在iOS8中,所有第三方框架都需要"嵌入".即使是在各种程序之间共享的框架也需要"嵌入"到这些程序中的每一个程序中.如果它在设备上安装在共享位置,则使用共享位置中相同"嵌入"代码的任何其他安装过程都可以重用该现有安装.这是针对iOS8的,在iOS8之前和iOS世界之外的这个答案是不可能的.

  • "嵌入二进制文件可以让用户更容易安装产品,以防他们的机器上没有这些东西的工作安装"听起来像OSX,而​​不是iOS ...如果他们没有库安装(即它是非标准的)然后应用程序根本不会加载. (2认同)