Android Crashlytics发送错误的行号

时间:2016-07-22 14:43:49

标签: android crashlytics twitter-fabric

我正在尝试将Crashlytics与我的应用集成并且它正在运行,但是通过的行号似乎是不正确的。这是我为我的测试异常得到的堆栈:

Fatal Exception: java.lang.RuntimeException: This is a test crash
   at com.myapp.testapp.activity.MainActivity.animateReveal(MainActivity.java:42453)
   at com.myapp.testapp.activity.MainActivity.onClick(MainActivity.java:1356)
   at android.view.View.performClick(View.java:5204)
   at android.view.View$PerformClick.run(View.java:21153)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5417)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

所以我的车祸就在第1453行,但出于某种原因它出现了42453?有趣的是,堆栈中的下一个行号是正确的......

Proguard的:

# Crashlitics

-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keepattributes *Annotation*

5 个答案:

答案 0 :(得分:0)

你试过这个吗?

  

要使Fabric能够正确地对您的崩溃报告进行去模糊处理,您需要这样做   从配置文件中删除此行,否则我们将无法自动上传您的映射文件:

     

-printmapping mapping.txt

  

-keep class com.crashlytics。** {*; }

     

-dontwarn com.crashlytics。**

答案 1 :(得分:0)

可能是因为您正在使用发布版本,这将删除评论/空格。

如果您正在使用 debug 版本,那么可能会显示正确的行,因为它不会优化您的源代码... < / p>

我仍然猜测还有另一个原因导致行号显示不正确,因为Fabric告诉我崩溃发生在第400行,即使该功能是在第300行调用的。我的意思是如果评论和要删除空格,Fabric应该告诉我们行超过300,而不是更多!

答案 2 :(得分:0)

在我的情况下,从'proguard-android-optimize.txt'默认proguard文件切换到'proguard-android.txt'解决了这个问题。使用proguard文件的优化版本可能会带来一定的风险,而这似乎就是其中之一。

答案 3 :(得分:0)

要保留Firebase Crashlytics SDK生成可读崩溃报告所需的信息,请将以下行添加到Proguard或Dexguard配置文件中:

-keepattributes SourceFile,LineNumberTable        # Keep file names and line numbers.
-keep public class * extends java.lang.Exception  # Optional: Keep custom exceptions.

答案 4 :(得分:0)

我遇到了同样的问题,一个简单的观察就解决了我的问题,请参阅 proguard-rule 并取消注释这些行 (-keepattributes SourceFile,LineNumberTable)

(-renamesourcefileattribute SourceFile)