iOS 调试与发布框架

Posted

技术标签:

【中文标题】iOS 调试与发布框架【英文标题】:iOS Debug vs Release Framework 【发布时间】:2017-03-23 09:23:06 【问题描述】:

我对框架有几个疑问:

Debug 和 Release 框架有什么区别? 创建发布框架时是否需要配置文件? 我们可以在归档分发 ipa 中使用 Debug 框架吗?

谢谢。

【问题讨论】:

1.) 发行版的调试符号较少。 2.) 对于分发,我不这么认为。使用该框架的应用程序必须对其进行代码签名。 3.) 是的,但可能会稍慢。 1.你可以看看这里:Xcode / Cocoa : What are the differences between debug and release builds? 【参考方案1】:
    调试版本和发布版本之间的区别在于,调试版本也构建了调试信息,因此调试版本可能会更慢并且构建产品的大小可能会更大。见this。此外,如果您使用发布版本进行构建,调试会更加困难。发布的版本是在为 gcc 开启优化的情况下编译的,有关发布优化的更多信息,请参阅 this。 框架不需要进行代码签名,当您将框架添加到项目中时,Xcode 会处理它。请记住检查项目“嵌入框架”部分中框架旁边的“代码签名副本”。 为什么不呢?但我建议使用发布框架,它更快。但是,如果您使用发布版本,如果框架有错误,则更难调试发生的情况。

【讨论】:

我认为3.是不正确的,嵌入式调试的动态框架(通用框架)需要剥离调试部分才能获得应用程序批准,例如Realm动态框架,有一个. sh 文件将调试部分从框架中剥离出来,所以我猜它也适用于单个调试框架 @Tj3n 你在说this吗?似乎不是关于调试,而是关于***.com/questions/38526399/…。 是的,我认为OP提到的Debug框架是模拟器,因为他也提到了Release框架,而只有模拟器和设备构建 @paper1111 谢谢你的回答,投了赞成票。需要一些时间才能接受。 2 是错误的,如果您愿意,Xcode 会为您处理代码设计。但这并不意味着框架不需要代码设计。如果您需要手动复制您的框架,您也必须手动对其进行代码设计(此处说明:developer.apple.com/library/content/qa/qa1936/_index.html【参考方案2】: 调试版本通常包括 x86_64 和 i386 架构以及标准设备架构,例如 armv7 和 arm64。模拟器需要 x86_64 和 i386,但在实际设备上不使用。发布版本应删除这些架构以节省空间。 调试版本在二进制文件中包含调试符号(构建设置 -> 在复制期间剥离调试符号通常为 NO)。发布版本通常不会。它们带有 dSYM 文件,有助于象征崩溃。这也节省了空间。 调试构建可能未优化(构建设置 -> 优化级别为无)。因此,它们的性能可能比发布版本差。 如果要嵌入到应用程序中,框架需要协同设计。调试发布版本不会改变这一点。如果您在应用程序的 Build Phases -> Embed Frameworks 中选中“Code Sign On Copy”复选框,Xcodes 会为您共同设计它们。 框架不需要配置文件。

因此,您可以使用调试版本,但不建议这样做。

【讨论】:

以上是关于iOS 调试与发布框架的主要内容,如果未能解决你的问题,请参考以下文章

iOS 静态与动态框架说明

iOS 外部附件框架附件DidConnect 未触发

iOS:基于Socket的第三方框架CocoaAsyncSocket的使用

Caffe框架GPU与MLU计算结果不一致请问如何调试?

Caffe框架GPU与MLU计算结果不一致请问如何调试?

如何创建和使用 iOS 框架与扩展共享代码