从Firebase崩溃报告中获取原始堆栈跟踪



最近我发布了一个模糊的Android应用程序,启用了firebase崩溃报告。应用程序一度崩溃,由于我还没有上传映射文件,我无法正确读取stacktrace。

所以我想下载堆栈跟踪,并用/retrace.sh -verbose mapping.txt ~/trace.txt手动对其进行卸载

然而,我无法获得原始形式的堆叠比赛。。。

所以我有两个问题:

  1. 如何从他们网站上的firebase崩溃报告选项卡获取原始表单
  2. 在将应用程序发布到play商店之前,我如何上传映射文件
  1. 目前,无法从Firebase崩溃报告中获取原始堆栈跟踪。因此,在查看每个错误的详细信息时,您需要手动复制它们

问题是,从Firebase Crash Reporting复制的堆栈跟踪字符串无法使用deobfusion,这是因为堆栈跟踪每行开头缺少at语句。

例如,这是你从Firebase崩溃报告中得到的

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.models.User.getUserName()' on a null object reference
com.example.views.adapters.ExampleAdapter.a (SourceFile:110)
com.example.views.adapters.ExampleAdapter.a (SourceFile:31)
b.a.a.a.b.a (SourceFile:54)
b.a.a.a.b.a (SourceFile:54)
android.support.v7.widget.RecyclerView$a.a (SourceFile:6279)
android.support.v7.widget.RecyclerView$a.b (SourceFile:6312)

您只需要在包含SourceFile字符串的每一行的开头处添加即可。结果应该像这个

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.models.User.getUserName()' on a null object reference
at com.example.views.adapters.ExampleAdapter.a (SourceFile:110)
at com.example.views.adapters.ExampleAdapter.a (SourceFile:31)
at b.a.a.a.b.a (SourceFile:54)
at b.a.a.a.b.a (SourceFile:54)
at android.support.v7.widget.RecyclerView$a.a (SourceFile:6279)
at android.support.v7.widget.RecyclerView$a.b (SourceFile:6312)

有了这个新字符串,您应该能够像往常一样取消堆栈跟踪。

我知道,这需要做很多工作,尤其是当发生多个错误时,但这是当前的解决方法,直到Firebase崩溃报告团队决定启用一个功能来下载原始堆栈跟踪,或者只在细节处放处的字符串,而不是将其删除。

  1. Firebase团队最近刚刚为此发布了一个崩溃报告插件。指南在这里-使用Gradle上传ProGuard映射文件

老实说,我还没能成功启用这个插件,仍然被指南弄糊涂了。我真的希望他们能像Fabric Crashlytics中那样简单,只需在build.gradle文件中添加ext.enableCrashlytics = true

还有另一种方法,在发布前故意崩溃应用程序,然后生成一个没有错误的新版本APK,然后您可以将mapping.txt文件上传到Firebase Crash Reporting控制台。:)

最新更新