Firebase崩溃报告包含带有<或>的堆栈跟踪

时间:2017-04-18 12:37:33

标签: android firebase firebase-crash-reporting

我有一个正在制作的应用,我正在使用Firebase进行错误和崩溃记录。最近,我已经看到了异常的堆栈跟踪中的一些行,从<OR>开始。以下是Firebase报告的异常中直接(保存包名称)的示例:

Exception java.lang.NullPointerException: Attempt to invoke interface method 'void com.mycompany.myapp.managers.b$a.f()' on a null object reference
com.mycompany.myapp.managers.PermissionManager.getInstance (PermissionManager.java)
<OR>.checkPermission (PermissionManager.java)
<OR>.onRequestPermissionsResult (PermissionManager.java)
com.mycompany.myapp.activities.ShareImageActivity.onSaveShare (ShareImageActivity.java)
com.mycompany.myapp.activities.ShareImageActivity$3.onClick (ShareImageActivity.java)

我知道这不是常规的堆栈跟踪,因为onRequestPermissionResults没有调用checkPermissioncheckPermission没有调用PermissionManager.getInstance。 我认为这是Android为了安全起见而混淆堆栈跟踪的方法之一,但我找不到任何关于此的文档。有谁知道如何解释这个堆栈跟踪?

2 个答案:

答案 0 :(得分:1)

您在此处看到的是,崩溃报告无法确定此时的实际对象。目前,已知Proguard反混淆的情况,其中对象是此处的目标可能是模糊的。如果您从类中删除行号,就可能出现这种情况,这看起来就像您正在做的那样。如果您能够更改Proguard设置以删除行号的删除,则可能会改善这种情况。

答案 1 :(得分:0)

将此添加到您的proguard-rules.pro

// obfuscate file name and keep line numbers
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

它应该消除歧义,你不应再在堆栈跟踪中看到<OR>