【发布时间】:2019-10-19 13:38:27
【问题描述】:
【问题讨论】:
【问题讨论】:
首先,库是为一个或多个架构编译的资源和代码本身的集合。
静态库 (*.a):
对于
static libraries (*.a),应用程序使用的代码是 期间由静态链接器复制到生成的可执行文件 编译时间。
动态库 (*.dylib):
Dynamic libraries (*.dylib)不同于静态库 感觉它们在运行时与应用程序的可执行文件相关联,但是 没有复制进去。结果,可执行文件更小,并且, 因为代码只在需要的时候才加载,所以启动时间是 通常更快。
对于框架,我们首先需要了解bundle这个概念(作为一个 框架是一种特定的捆绑包)。捆绑包是一个文件 目录里面有子目录。在 iOS 上,捆绑包用于 方便地将相关文件放在一个包中 - 用于 实例、图像、nib 或编译后的代码。 系统将其视为一个 文件,您可以在不知道其内部的情况下访问捆绑资源 结构。
图书馆还可能有其他资源:标题、本地化 文件、图像、文档和使用示例。我们可以捆绑所有 把这些放在一个包里——这个名字就是框架。
静态框架包含一个与其打包的静态库 资源。动态框架包含动态库及其 资源。除此之外,动态框架可以方便地 在同一个动态库中包含不同版本的同一个动态库 框架!
感谢您接受我的回答!
为一种或多种架构编译?
每个架构都需要不同的二进制文件,并且当您构建一个 app Xcode 将为您构建正确的架构 目前正在合作。例如,如果您要求它在 模拟器,那么它只会构建 i386 版本(或 x86_64 64 位)。
这意味着构建尽可能快。当您归档一个 app 或 build 在发布模式下,然后 Xcode 将为所有三个 ARM 构建 架构,从而允许应用程序在大多数设备上运行。什么 不过关于其他构建?
当然,当您构建框架时,您会希望开发人员能够 能够将它用于所有可能的架构,对吗?你当然知道 因为那意味着你可以赢得你的尊重和钦佩 同行。
因此,您需要为所有五种架构构建 Xcode。 这个过程创建了一个所谓的胖二进制文件,其中包含一个切片 对于每个架构。
arm7: Used in the oldest iOS 7-supporting devices
arm7s: As used in iPhone 5 and 5C
arm64: For the 64-bit ARM processor in iPhone 5S
i386: For the 32-bit simulator
x86_64: Used in 64-bit simulator
【讨论】:
compiled for one or more architectures.吗?