如何对 Apple 应用审核提交中的 JSON 崩溃报告进行符号化

How to symbolicate a JSON crash report from Apple app review submission

提问人:Gomu Miyashita 提问时间:10/26/2023 最后编辑:Gomu Miyashita 更新时间:10/28/2023 访问量:69

问:

我已提交 iOS 应用程序以供审核。审阅者无法查看应用,因为它在启动时崩溃。

崩溃报告的 JSON 格式与 Apple 文档中的格式不同,如下所示:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libswiftCore.dylib                0x00000001bd38da70 0x1bd149000 + 2378352
1   libswiftCore.dylib                0x00000001bd38da70 0x1bd149000 + 2378352
2   libswiftCore.dylib                0x00000001bd15958c 0x1bd149000 + 66956
3   libswiftCore.dylib                0x00000001bd15c814 0x1bd149000 + 79892
4   TouchCanvas                       0x00000001022cbfa8 0x1022c0000 + 49064
5   TouchCanvas                       0x00000001022c90b0 0x1022c0000 + 37040
6   TouchCanvas                       0x00000001022e7374 0x1022c0000 + 160628
7   TouchCanvas                       0x00000001022df754 0x1022c0000 + 128852
8   TouchCanvas                       0x00000001022df7e8 0x1022c0000 + 129000
9   UIKitCore                         0x00000001b3da6230 0x1b3348000 + 10871344
10  UIKitCore                         0x00000001b3da6230 0x1b3348000 + 10871344
11  UIKitCore                         0x00000001b3e01e24 0x1b3348000 + 11247140

来源:developer.apple.com

我收到的崩溃报告看起来更像是这样:Crash report from App Store Connect in JSON

Apple 是否更改了崩溃报告格式?如何对 JSON 崩溃报告进行符号化?任何链接或信息将不胜感激。

我无法使用 Apple 文档中描述的方法,因为设备日志按钮似乎已从设备和模拟器窗口中删除,如 Apple 开发人员论坛 developer.apple.com/forums 的这篇文章中所述。此 SO 注释 stackoverflow.com 中详细介绍了该方法

我正在使用 Xcode 版本 15.0 (15A240d)。

iOS 崩溃报告 xcode15 符号化

评论


答:

0赞 Gomu Miyashita 10/27/2023 #1

我找到了一个解决方案。

我使用了 GitHub 项目 AppleCrashScripts 中的这个脚本,它将 Apple JSON 崩溃格式(在较新的设备上使用?)转换为旧样式类型的崩溃报告,然后像往常一样使用 symbolicatecrash。

评论

0赞 HangarRash 10/28/2023
只需在 Xcode 中打开崩溃日志即可。无需手动运行。symbolicatecrash
0赞 Gomu Miyashita 10/28/2023
你能解释一下我是怎么做到的吗?该应用仅在应用审核期间崩溃,而不会在 Testflight 中崩溃。因此,我正在尝试在Xcode中导入下载的崩溃报告。我已经尝试了文档中描述的设备和模拟器方法,但 [设备日志按钮] 在 Xcode 15 中不再可用。我也尝试过使用 Organizer - > Crashes,但它只会显示来自 App Store 或 Testflight 的崩溃,我不知道如何导入“外部”崩溃报告。报告是扩展名为.txt JSON 文件。没有运气重命名为 .crash。任何帮助将不胜感激。
0赞 HangarRash 10/28/2023
看看我刚刚发布的答案。
1赞 HangarRash 10/28/2023 #2

如果一开始就有一个带有一些 JSON 的崩溃日志,然后是典型的崩溃报告,请确保该文件的扩展名为 ips。

然后在Finder中右键单击该文件,然后选择使用Xcode打开该文件。Xcode 将提示您选择与崩溃日志关联的项目。选择正确的项目后,您将看到符号化的崩溃报告,并转到项目中导致崩溃的相关代码行。

如果您选择的项目副本代表您存档应用时的代码,则此方法最有效。如果相关文件从那时起发生了更改,则可能会指向错误的代码行。