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

Viz*_*har 4 android firebase firebase-crash-reporting

最近我发布了一个已发布的混淆的Android应用程序,启用了firebase崩溃报告.应用程序崩溃,因为我没有上传映射文件,我无法正确读取堆栈跟踪.

所以我想下载堆栈跟踪并手动反混淆它 /retrace.sh -verbose mapping.txt ~/trace.txt

但是我无法获得堆栈跟踪的原始形式......

所以我有两个问题:

  1. 如何从其网站上的firebase崩溃报告选项卡获取原始表单?
  2. 如何在将应用程序发布到Play商店之前上传映射文件?

Wil*_*lik 7

  1. 目前,无法从Firebase崩溃报告中获取原始堆栈跟踪.因此,您需要在查看每个错误的详细信息时手动复制它们.

问题是,反混淆不适用于从Firebase崩溃报告中复制的堆栈跟踪字符串,这是因为堆栈跟踪的每一行开头缺少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)
Run Code Online (Sandbox Code Playgroud)

您只需要包含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)
Run Code Online (Sandbox Code Playgroud)

使用这个新字符串,您应该能够像往常一样对堆栈跟踪进行反混淆处理.

我知道,这是很多工作,特别是当发生多个错误但这是当前的解决方法,直到Firebase崩溃报告团队决定启用一个功能来下载原始堆栈跟踪或只是将at字符串放在详细信息而不是修剪出.

  1. Firebase团队最近刚刚发布了一个Crash Reporting插件.指南在这里 - 使用Gradle上传ProGuard映射文件

老实说,我还没能成功启用这个插件,仍然被指南搞糊涂了.我真的希望他们将它作为简单的面料Crashlytics,只需添加ext.enableCrashlytics = true了在build.gradle文件中.

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