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

我对框架有几个疑问:

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

谢谢。

【问题讨论】:

标签: ios objective-c swift frameworks


【解决方案1】:
  1. 调试版本和发布版本之间的区别在于,调试版本也构建了调试信息,因此调试版本可能会更慢并且构建产品的大小可能会更大。见this。此外,如果您使用发布版本进行构建,调试会更加困难。发布的版本是在为 gcc 开启优化的情况下编译的,有关发布优化的更多信息,请参阅 this
  2. 框架不需要进行代码签名,当您将框架添加到项目中时,Xcode 会处理它。请记住检查项目“嵌入框架”部分中框架旁边的“代码签名副本”。
  3. 为什么不呢?但我建议使用发布框架,它更快。但是,如果您使用发布版本,如果框架有错误,则更难调试发生的情况。

【讨论】:

  • 我认为3.是不正确的,嵌入式调试的动态框架(通用框架)需要剥离调试部分才能获得应用程序批准,例如Realm动态框架,有一个. sh 文件将调试部分从框架中剥离出来,所以我猜它也适用于单个调试框架
  • @Tj3n 你在说this吗?似乎不是关于调试,而是关于stackoverflow.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 会为您共同设计它们。
  • 框架不需要配置文件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2019-05-27
    • 2015-01-13
    • 2014-07-23
    • 2013-11-02
    • 2011-03-09
    • 2011-01-27
    相关资源
    最近更新 更多