iOS - Crashlytics如何处理丢失的dSYMS

时间:2017-05-11 10:02:28

标签: crashlytics google-fabric

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

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

然后我按照Missing dSYMs Documentation手动上传我丢失的dSYM。 它工作正常,所需的缺失dSYM现在在我的仪表板上条纹化。

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

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

我真的不明白这个过程。

1 个答案:

答案 0 :(得分:4)

Mike来自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脚本批量上传它们。 upload-symbols脚本也可以在CI机器上运行。

当一个崩溃进入Fabric时,我们会看看是否需要dSYM来表示崩溃。如果我们不这样做,我们会通过仪表板和您的Fabric应用程序设置页面提醒您。如果碰撞失败dSYM,我们将存储7天。如果此时没有上传丢失的dSYM,那么我们将丢弃崩溃而不处理它。如果上传了丢失的dSYM,则崩溃将被排队以进行处理,并且可能需要几分钟到几个小时来处理和显示。

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

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