【发布时间】:2015-03-10 02:09:43
【问题描述】:
我不得不承认,随着 iOS 8 的发布,我对 iOS 中的动态和静态框架有些困惑。
我正在寻找一种方法来分发我创建的库,并且我需要支持 iOS 7 及更高版本。 (注意:这将是一个专有框架。我不能使用可可豆荚,也不能分发源代码)。以下是我已经知道的:
- iOS 8 为 iOS 引入了“嵌入式框架”,但据我了解,它们不适用于 iOS 7,仅适用于 iOS 8 及更高版本。
- 我可以选择将我的库作为静态库(.a 文件)分发,也可以分发标头。我知道这是处理这种情况的常用方法,但我想找到比这更简单的方法(如果可能的话,还可以捆绑一些资源)。
- 我还发现 iOS 7 不支持动态 .framework 库(仅静态),因为它不支持动态链接。但 iOS 8 和静态链接一样。
以下是我关于此信息的问题:
- 我看到我可以通过将 Mach-O 类型更改为“静态库”来创建一个 .framework 目标并将其设为静态。这样就足以支持 iOS 7 而没有任何问题,并且还可以分发我的作为 .framework 包的库?如果是这样,为什么 iOS 8 中的“嵌入式框架”如此重要,正如互联网上的许多资源所暗示的那样?我错过了什么吗?
- 是否有必要像对我制作的任何其他应用程序一样对 .framework 进行代码设计?
- 如果我需要在我的 .framework 文件中包含其他资源(如核心数据或图像)怎么办?我需要为此制作一个单独的 .bundle 文件吗?
【问题讨论】:
-
“iOS 7 不支持 .framework 库,因为它不支持动态链接” 这个说法不正确。
-
我明白了。你能告诉我正确的句子吗?是因为 iOS 7 支持动态链接还是因为 iOS 7 支持 .framework 库是错误的?还是两者兼而有之?
-
记住 AVFoundation 和 CoreGraphics 都是 .framework。可能这可以帮助您找到所有问题的答案:raywenderlich.com/65964/create-a-framework-for-ios
-
我修正了这句话。在发布我的问题之前,我已经阅读了链接。此链接没有解释有关我的问题的任何内容。它从静态库开始,并手动将其包装到 .framework 文件中。我说的是 Xcode 6 中的 Cocoa Touch Framework 目标,然后将类型更改为静态库。它没有提到代码签名(为什么以及是否需要)、额外资源等。
-
您可以使用 CocoaPods 分发专有框架(例如 Parse)
标签: ios frameworks static-libraries static-linking ios-frameworks