iOS 静态与动态框架说明

2024-05-27

我不得不承认,随着 iOS 8 的发布,我对 iOS 中的动态框架和静态框架有点困惑。

我正在寻找一种方法来分发我创建的库,并且我需要支持 iOS 7 及更高版本。 (注意:这将是一个专有框架。我不能使用 cocoa pods,也不能分发源代码)。这是我已经知道的:

  • iOS 8 为 iOS 引入了“嵌入式框架”,但据我了解,它们不适用于 iOS 7,仅适用于 iOS 8 及更高版本。
  • 我可以选择将我的库作为静态库(.a 文件)分发,也可以分发标头。我知道这是处理这种情况的常见方法,但我想找到比这更简单的方法(如果可能的话,还可以将一些资源与其捆绑在一起)。
  • 我还发现 iOS 7 不支持动态 .framework 库(仅静态),因为它不支持动态链接。但 iOS 8 做到了,静态链接也做到了。

以下是我对这些信息的疑问:

  • 我看到我可以创建一个 .framework 目标,并通过将 Mach-O 类型更改为“静态库”来使其静态。这是否足以支持 iOS 7 而没有任何问题,并且还可以将我的库作为.framework 捆绑包?如果是这样,为什么 iOS 8 中的“嵌入式框架”如此重要,正如互联网上的许多资源所暗示的那样?我是否错过了什么?
  • 是否有必要像我制作的任何其他应用程序一样对 .framework 进行协同设计?
  • 如果我需要在 .framework 文件中包含其他资源(例如核心数据或图像)怎么办?我需要为此制作一个单独的 .bundle 文件吗?

在 iOS8 之前,Xcode 只允许为 iOS 创建静态库的选项。常见的问题是我们必须单独发送二进制文件和标头。

后来,一些开发人员提出了创建“静态框架”的想法。 [.framework 只是一个带有指向 lib 和标头的符号链接的文件夹]。一个这样的例子是https://github.com/jverkoey/iOS-Framework https://github.com/jverkoey/iOS-Framework

此选项适用于 iOS 7 或 8 或更早版本。因为它们只是静态库,可以方便地捆绑头文件。

至于您对资源的问题,我们需要将它们捆绑在“.bundle”中。为了运送它们,我不确定我们是否可以将它们包含在 .framework 文件夹中。过去,我曾经将我的库作为静态框架和捆绑包...

但是,如果您使用 Swift,上述选项将不适用于您。 Xcode 不支持构建包含 swift 代码的静态库。

如果需要快速使用,则必须使用动态框架。理论上,动态框架可以在 iOS7 中工作。但是,我认为如果应用程序针对 iOS7 并使用动态框架,iTunes Connect 将会拒绝:-)。

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 静态与动态框架说明 的相关文章

随机推荐