1

我有一个关于 dSYMS 以及 Crashlytics 如何处理它们的问题。

bitcode enabled我的应用程序包含不同的目标,并且由于Watchkit App和目标而编译了整个项目Watchkit App Extension

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

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

我是否只会从上传 dSYM 之日起收到崩溃报告?我应该为每个版本手动上传吗?

我真的不明白这个过程。

4

1 回答 1

4

来自 Fabric 的 Mike。

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

启用 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,则崩溃会排队等待处理,处理和显示可能需要几分钟到几小时。

话虽如此,处理此问题的最佳方法是使用 upload-symbols 脚本向我们获取符号,即使还没有报告丢失的 dSYM,以便我们在发生崩溃时拥有符号。如果在报告崩溃时我们有 dSYM,则崩溃将在几秒钟内(平均)内得到处理。

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

于 2017-05-11T12:50:32.113 回答