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

cdmah0mi  于 2023-10-24  发布在  iOS
关注(0)|答案(2)|浏览(154)

我在iOS上的应用程序(主要是c++)收到了一堆崩溃日志。我的问题是我似乎无法正确地符号化这些崩溃报告。
在iOS上剥离调试符号的“适当”设置是什么?我知道你想剥离调试符号,这样应用程序的下载大小就不会大得离谱。
但问题是,它似乎使崩溃报告几乎无法阅读。
xcode存档中的dSYM文件是否会被发送并最终被用户下载?
或者它只是为了将来的符号化目的而保留的东西(在我自己的机器上本地完成,在xcode上)?

pxq42qpu

pxq42qpu1#

或者它只是为了将来的符号化目的而保留的东西(在我自己的机器上本地完成,在Xcode上)?
您的“发布”配置(或您用于分发的任何配置)应该具有以下设置:
默认隐藏的符号:是
Xcode仍然会生成一个dSYM文件夹,这是你用来符号化崩溃日志的文件夹。有3种处理符号化的方法:
1.使用Xcode。为此,您需要在发布时使用Product -> Archive功能。创建存档后,您可以选择“Export”然后选择“保存用于iOS App Store部署”。之后,您可以将崩溃日志拖到“Device Store”窗口的左侧,Xcode将为您标记它们。
1.使用位于Xcode.app文件夹中的symbolicatecrash工具手动符号化。如果您已经向用户发布了代码但没有Xcode存档,这很有用。您需要确保崩溃日志与二进制和dSYM匹配,否则它将无法工作。
1.使用第三方工具收集崩溃报告并为您进行符号化。例如Crashlytics、Bugsense或HockeyApp。

rwqw0loc

rwqw0loc2#

对于任何东西,如果你想知道它的正确设置,你所要做的就是:
在Xcode中重新创建相同的精确的目标类型从头开始。我的意思是,如果你想知道应用的正确设置,那么就从头开始重新创建应用,然后去检查它的设置。如果你想知道框架的默认设置,那么就从头开始重新创建动态框架,然后检查它的设置。
注意事项:一个应用程序的默认设置,一个框架的默认设置,一个静态库的默认设置,以及其他的设置是不同的。

为什么app和framework不一样?

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

为什么是BVS Release不同?

有了ESTA,我们的目标是:

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

对于发布版本,目标是:

  • 使用大多数优化进行构建。这通常会降低速度
  • 如果构建适用于其他架构(arm64 vs Intel),这意味着要花费更多的时间来构建东西。
  • 提取出dSYM(调试符号)以保存空间。
  • 不需要调试,而只是能够在需要时符号化崩溃报告。

相关问题