首页 > 解决方案 > iOS:何时选择 Cocoa Touch 静态库或框架?

问题描述

首先:我在这里阅读了其他问题,但他们指出,例如 Swift 不能在框架或/和库中使用,或者已经过时(5 岁)。

为了实现这一点,Cocoa Touch 框架与 Cocoa Touch 静态库的优缺点是什么?

我正在尝试在两个 iOS 目标之间共享代码,例如 iPhone 目标和 iPad 目标(此处不需要通用目标)。

如果我理解正确,静态库和应用程序代码将合并为一个二进制文件,而框架和应用程序代码的组合将是两个二进制文件。我想这意味着更多的签名和更多的 DSYM 文件要上传到崩溃报告工具?

此外,框架应该/也可以独立工作,而静态库总是需要其他代码。

测试、分发到 App Store、调试(断点)和编译时间呢?哪个选项对什么任务表现更好?

标签: iosswiftframeworksstatic-libraries

解决方案


静态与动态框架的一些澄清:iOS 静态与动态框架澄清

语言:关于 Swift 的使用,之前你不能用它创建静态库,但是从 Xcode 9 开始你可以。所以我猜 Swift vs. ObjC 不会有问题。还没有找到任何关于使用 Swift 创建静态库的教程,仅用于创建框架(例如:https ://www.raywenderlich.com/5109-creating-a-framework-for-ios )。因此,在查找资源/参考方面,框架可能会更容易。

dSYM:引用 Apple 员工的回答:“如果您将框架构建为应用程序目标的依赖项,则框架的 dSYM 将存在于您在归档应用程序以进行分发时创建的归档文件中。如果您使用的是供应商提供的框架已经编译,您需要联系框架供应商了解 dSYM。” (https://forums.developer.apple.com/thread/70716)。至于静态库,就您处理的 dSYM 而言,它们的工作量会更少。(为什么 Xcode 不为静态库生成 dSYM

框架的协同设计:“开发人员可以自由分发 iOS 框架,而无需对其进行代码签名,因为消费者无论如何都会对其重新进行代码设计,但是 Xcode 强制开发人员在为 iOS 设备构建时对他们的框架进行代码签名”(创建 iOS/OSX 框架:是有必要在分发给其他开发人员之前对其进行代码设计吗?

至于测试,在单元测试目标的构建阶段添加框架或静态库应该可以完成这项工作。

断点:静态库:在 Xcode 框架中调试静态库: Xcode 9 - 框架断点

对于我在链接中读到的内容,虽然静态库可能更有效,但框架的设置工作要少得多。


推荐阅读