当前位置:  开发笔记 > Android > 正文

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

如何解决《从Firebase崩溃报告中获取原始堆栈跟踪》经验,为你挑选了1个好方法。

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

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

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

所以我有两个问题:

    如何从其网站上的firebase崩溃报告选项卡获取原始表单?

    如何在将应用程序发布到Play商店之前上传映射文件?

Wilik.. 7

    目前,无法从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)

您只需要包含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崩溃报告团队决定启用一个功能来下载原始堆栈跟踪或只是将at字符串放在详细信息而不是修剪出.

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

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

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



1> Wilik..:

    目前,无法从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)

您只需要包含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崩溃报告团队决定启用一个功能来下载原始堆栈跟踪或只是将at字符串放在详细信息而不是修剪出.

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

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

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

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有