上传符号文件
原生崩溃报告可能包含符号缺失问题。如果项目中符号缺失,您可以手动将应用程序符号文件添加到项目中。这将有助于更好地诊断和解决问题。
如果崩溃和异常报告包含符号缺失问题,请从 Cloud Diagnostics Dashboard(后台)添加应用程序符号文件。
要上传符号,请执行以下操作:
- 打开 Unity Dashboard(Unity 后台)。
- 选择启用了 Cloud Diagnostics 的项目。
- 从左侧导航栏中,选择 Cloud Diagnostics > Debugging Symbols(调试符号)。
- 从 Debugging Symbols(调试符号)页面上,选择 Upload symbols(上传符号),然后从电脑上选择所需的文件。
上传新的符号后,需要经过短暂等待,新的符号才能正常使用。请等待至少五分钟,然后再提交新的崩溃。处理完成后,任何新报告都应该以正确的符号化生成。
查找并上传缺失的 iOS/OSX 应用程序符号
使用 Xcode 编译应用程序时,iOS/OSX 会将符号存放在 dSYM 文件夹中,文件夹名称为以下格式:
~/Library/Developer/Xcode/DerivedData/<build id>;/Build/Products/<build type>/appname.dSYM
dSYM 文件是一种 ELF 文件,其中包含应用程序的 DWARF(带有属性记录格式的调试)调试信息。DWARF 是一种支持源代码级调试的调试文件格式。
要验证 dSYM 文件是否包含正确的 UUID,请运行 dwarfdump
命令,并将 appname
替换为应用程序的 dSYM 文件的名称:
dwarfdump -u appname.dSYM/Contents/Resources/DWARF/appname
下面显示了 dwarfdump
的示例输出:
UUID: 5EEDCCD2-38E7-3E52-81EC-B90C7BCD6D91 (armv7) appname.dSYM/Contents/Resources/DWARF/appname
UUID: 583173FD-6697-3E3C-90DC-EA9147563A5B (arm64) appname.dSYM/Contents/Resources/DWARF/appname
**注意:**Dwarfdump 是一个以人类可读格式打印 DWARF 信息的应用程序。dwarfdump 的输出会以大写字母和破折号显示 UUID。UUID 通常以全小写字母且没有破折号的形式显示。这两种格式都可以表示 UUID。例如,5EEDCCD2-38E7-3E52-81EC-B90C7BCD6D91
和 5eedccd238e73e5281ecb90c7bcd6d91
表示相同的 UUID。
找到正确的 dSYM 文件夹后,将整个文件夹压缩,并使用 Unity Dashboard(Unity 后台)上的 **Debugging Symbols(调试符号)**选项卡将其上传到 Cloud Diagnostics 服务。
iOS、Bitcode 和 App Store
当您在启用了 Bitcode 的情况下构建 iOS 应用程序并将其提交到 App Store 时,Apple 会对您的构建版本进行后处理并创建一个新的二进制文件。新的二进制文件具有新的 UUID 和相应的新 dSYM。在这种情况下,您必须从 iTunes Connect 下载 dSYM 文件。进入 iTunes Connect,选择 My Apps(我的应用程序)> Activity(活动) > All Builds(所有构建版本)>(选择您的构建版本),即可找到此文件。
将应用程序上传到 App Store 中时,选中 **Include bitcode for iOS content(包含 iOS 内容的 bitcode)**和 Upload your app’s symbols to receive symbolicated reports from Apple(上传应用程序的符号以从 Apple 收到符号化的报告),以让 App Store 使用正确的符号生成新的 dSYM 文件:
下载新的 dSYM 文件后,使用 dwarfdump 验证 UUID 正确无误。将该文件压缩,然后通过 **Debugging Symbols(调试符号)**选项卡将其上传到 Cloud Diagnostics 服务。
有关符号化的更多信息,请参阅 Apple Developer 网站上的 符号崩溃报告 (Symbolicating Crash Reports)。
**注意:**当您上传新的 dSYM lD 时,报告不会重新符号化。您必须提交一个新的崩溃,才能使用新的符号生成报告。