检查 Xcode 是否生成了 dSYM
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ )
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/14899643.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
默认情况下,Firebase Crashlytics 会自动处理您的调试符号 (dSYM) 文件,以便为您提供经过去混淆处理且易于用户理解的崩溃报告。此行为是在您将初始化 Crashlytics 的运行脚本添加到应用的构建阶段时设置的。
遗憾的是,有几种情况可能会导致您的 dSYM 上传失败,例如应用中包含位码或独特的项目配置。本指南提供了一些方法,如果 Crashlytics 无法找到应用的 dSYM,您可以借鉴这些方法来排查问题。
检查 Xcode 是否生成了 dSYM
在很多情况下,dSYM 文件缺失是因为 Xcode 根本没有生成它们。在上传失败时,Crashlytics 会在 Firebase 控制台中显示“dSYM 缺失”提醒。如果您收到该提醒,请先检查 Xcode 是否确实为每个 build 生成了正确的 dSYM:
-
在 Xcode 中打开您的项目,然后在 Xcode Navigator 中选择项目文件。
-
选择您的主要构建目标。
-
打开目标的 Build Settings 标签页,然后点击 All。
-
搜索“debug information format”。
-
对于所有构建类型,请将 Debug Information Format 设置为 DWARF with dSYM File。
-
重新构建您的应用。
您的崩溃报告现在应该会显示在 Firebase 控制台中。如果问题仍然存在或者您遇到其他错误,请尝试查找您的 dSYM 并将其手动上传到 Crashlytics。
查找您的 dSYM
有时,由于位码配置或控制台连接问题,Crashlytics 无法找到应用的 dSYM。遇到这种情况时,您还可以通过另外两种方法排查问题:
对于已发布到 App Store 或提交到 TestFlight 且启用了位码的 build,Apple 会生成新的 dSYM。 如果您的应用符合上述任何情况,请从 App Store 下载新的 dSYM:
- 登录 App Store Connect,然后依次点击 My Apps > Activity。
- 选择要下载的 dSYM 对应的 build。
- 依次点击 Build Details > Download dSYM。
运行以下命令,在您的机器上显示所有 dSYM 的 UUID,然后搜索缺少的 dSYM:
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
找到 dSYM 后,将其上传到 Crashlytics。如果 mdfind
命令未返回任何结果,您可以在 .app 所在的 Products
目录中查找(Products
目录默认位于 Derived Data
中)。如果您的应用已正式发布,您还可以在磁盘上的 .xcarchive 目录中查找其 dSYM:
- 在 Xcode 中,打开 Organizer 窗口,然后从列表中选择您的应用。Xcode 会显示您项目的归档列表。
- 按住 Control 键的同时点击归档,即可在 Finder 中查看它。然后,再次在按住 Control 键的同时点击它,再点击 Show Package Contents。
在 .xcarchive 中有一个 dSYM 目录,该目录包含在 Xcode 的归档过程中生成的 dSYM。当您使用“Organizer”窗口中的 Download dSYMs... 工具时,重新编译的位码 dSYM 也会下载到此文件夹中。
上传您的 dSYM
注意 :我们正在将 upload-symbols
与其他 Firebase CLI 工具集成。
作为一种备选方案,Crashlytics 包含一个 upload-symbols
脚本,您可以在构建过程中随时调用该脚本,以手动上传您的 dSYM。该脚本会提供有关上传流程的更多信息,并且具有更为稳健的错误消息功能(如需查看使用情况记录和其他说明,请在不带任何参数的情况下运行 upload-symbols
)。
要运行 upload-symbols
脚本,请使用以下选项之一:
-
在构建流程中加入以下行:
find dSYM_directory -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p platform \{\}
-
直接从终端运行该脚本:
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs