iOS 发布版本中正确的“剥离调试符号”设置是什么?

问题描述 投票:0回答:2

我在 iOS 上收到了我的(主要是 C++)应用程序的一堆崩溃日志。我的问题是我似乎无法正确地表示这些崩溃报告。

在 iOS 上剥离调试符号以进行发布的“正确”设置是什么?我知道您想要删除调试符号,这样应用程序的下载大小就不会大得离谱。

但问题是,它似乎使崩溃报告几乎不可读。

xcode 存档上的 dSYM 文件是否会被发送并最终被用户下载?

或者它只是为了将来的符号目的而保留(在我自己的机器上本地完成,在 xcode 上)?

ios xcode debugging debug-symbols
2个回答
0
投票

或者它只是为了将来的符号目的而保留(在我自己的机器上本地完成,在 Xcode 上)?

这个。您的“发布”配置(或用于分发的任何配置)应具有以下设置:

默认隐藏符号:是

Xcode 仍会生成一个 dSYM 文件夹,您将使用该文件夹来符号化崩溃日志。有 3 种处理符号的方法:

  1. 使用 Xcode。为此,无论何时发布,您都需要使用“产品”->“存档”功能。创建存档后,您可以选择“导出”,然后选择“保存以用于 iOS App Store 部署”。之后,您可以将崩溃日志拖到“设备日志”窗口的左侧,Xcode 将为您将它们符号化。

  2. 使用 Xcode.app 文件夹内的 symbolicatecrash 工具手动进行符号化。如果您已向用户发布代码但没有 Xcode 存档,这会很有用。您需要确保崩溃日志与二进制文件和 dSYM 匹配,否则它将无法工作。

  3. 使用第三方工具收集崩溃报告并为您进行符号化。示例包括 Crashlytics、Bugsense 或 HockeyApp。


0
投票

对于任何事情,如果您想知道其正确设置,您所要做的就是:

在 Xcode 中从头开始重新创建相同的精确目标类型。 我的意思是,如果您想知道应用程序的正确设置,请从头开始重新创建应用程序,然后检查其设置。

注意:应用程序、框架、静态库和其他事物的默认设置是不同的。此外,Release 与 Debug 的默认值也是不同的。

为什么应用程序与框架不同?

因为框架是依赖项,而不是最终产品。这通常意味着应用程序需要不同的编译、链接、从另一个依赖项或主应用程序本身剥离设置。

为什么调试与发布不同?

通过调试,目标是:

  • 快速构建。这意味着:
  • 不要为其他架构构建。
  • 不要创建单独的 dSYM。
  • 能够调试

发布版本的目标是:

  • 使用大多数优化进行构建。通常这会降低速度
  • 验证构建是否适用于其他架构(arm64 与 Intel)。这意味着需要花费更多时间来构建东西。
  • 提取 dSYM(调试符号)以节省空间。
  • 不需要调试,而只需在需要时能够符号化崩溃报告。
© www.soinside.com 2019 - 2024. All rights reserved.