Xcode 中的嵌入式二进制文件是什么?

What are Embedded Binaries in Xcode?

我在 Swift 项目中使用 Alamofire,他们的部分手动安装说明是在常规中的 Embedded Binaries 下添加 Alamofire我的应用程序目标选​​项卡。

什么是嵌入式二进制文件

  • "Binary" 表示:编译后的代码 — 与 "source code" 相反,这是您将代码编写为文本时所使用的内容。

    他们可以给你源代码并让编译它,但他们没有;他们对源代码保密,所以他们在编译后全部给你,这样你就看不到了。

  • "Embedded" 表示:通过在构建时将它们复制到应用程序包中,将其包含在应用程序包中。

    因此,他们会向您提供一些编译代码(框架)并告诉您如何将它们包含在您的应用程序包中。与 Cocoa 的框架不同,这些框架并不存在于设备上,因此如果您不将它们包含在应用程序中,它们将不会存在并且您的应用程序将无法调用它们。

    将此与 Cocoa 的框架进行对比。它们也是编译代码。但是它们 do 已经存在于设备上。因此它们没有嵌入到您的应用程序中;它们只是 链接(并且,如果它们出现,将出现在下一组,链接框架和库中)。

嵌入式二进制文件是在您构建项目时复制到您的应用程序包中的二进制文件。当您的应用程序依赖于第三方框架时使用嵌入式二进制文件,这样人们就可以使用您的应用程序而无需在他们的机器上安装这些框架。嵌入式二进制文件使用户不必手动安装第三方框架。您的应用程序使用您嵌入的框架。

在您的 Alamofire 示例中,您的应用程序依赖于 Alamofire。如果你没有嵌入 Alamofire 框架,除非他们手动安装 Alamofire,否则没有人能够使用你的应用程序。通过在您的应用程序中嵌入 Alamofire,每个人都可以 运行 您的应用程序。

嵌入二进制文件将整个框架复制到目标。

A framework is a hierarchical directory that encapsulates a dynamic library, header files, and resources, such as storyboards, image files, and localized strings, into a single package. Apps using frameworks need to embed the framework in the app's bundle.

因此,当您在应用程序中嵌入框架时,它会增加应用程序的大小,因为它会被复制到您的应用程序包中。在大多数情况下,我们将在使用第三方框架时使用这些部分。

当我们将 framework 添加到 Embedded Binaries 时,它会自动将该框架添加到 Linked Frameworks and Libraries

更多细节请参考苹果文档:https://developer.apple.com/library/archive/technotes/tn2435/_index.html