iOS - Crashlytics 如何处理丢失的 dSYMS

iOS - How Crashlytics handles missing dSYMSs

我对 dSYMS 以及 Crashlytics 如何处理它们有疑问。

我的应用程序包含不同的目标,由于 Watchkit AppWatchkit App Extension 目标,整个项目使用 bitcode enabled 编译。

然后我按照 Missing dSYMs Documentation 手动上传我丢失的 dSYM。 它奏效了,必需的缺失 dSYM 现在在我的仪表板上以条纹显示。

但我想知道,它究竟是如何工作的?我的这个版本的应用程序在 AppStore 上有 1 个月。

我只能从今天(即我上传 dSYM 的日期)开始收到崩溃报告吗? 我应该为每个版本手动上传吗?

我不是很明白这个过程。

这里是来自 Fabric 的迈克。

dSYM 包含为您的应用程序提供完全符号化堆栈跟踪所需的符号。当您在 Xcode 中进行本地构建时,dSYM 位于您的本地计算机上,因此 Fabric run script build phase 可以上传它们。

启用 Bitcode 后,Apple 会在其服务器上重新编译您的应用程序,从而创建新的 dSYM。由于它发生在他们的服务上,Fabric 无法自动上传这些。 Apple 确实通过 Xcode 或 iTunesConnect 提供了 dSYM。由于我们无法访问这些 dSYM(我们需要您的 Apple 开发人员凭据,但我们不想拥有它们),您确实需要从 Apple 获取 dSYM,并通过 Apple 或 Testflight 将它们上传到每个版本的 Fabric。您还可以使用 upload-symbols 脚本批量上传它们。上传符号脚本也适用于 CI 台机器。

当 Fabric 发生崩溃时,我们会查看是否拥有象征崩溃所需的 dSYM。如果我们不这样做,我们将通过仪表板和您的 Fabric 应用程序设置页面提醒您。如果崩溃中缺少 dSYM,我们会将其存储 7 天。如果这次没有上传丢失的dSYM,那么我们将放弃崩溃而不处理它。如果上传了丢失的 dSYM,则崩溃将排队等待处理,处理和显示可能需要几分钟到几小时。

话虽如此,处理此问题的最佳方法是使用上传符号脚本将符号提供给我们,即使还没有报告丢失的 dSYM,这样我们在崩溃时就有了符号发生。如果我们在报告崩溃时拥有 dSYM,则崩溃将在几秒内(平均)得到处理。

另一种方法是使用 fastlane's refresh_dsyms 命令获取 dSYM 并上传它们。