Android Crashlytics发送错误的行号
我正在尝试将Crashlytics与我的应用程序集成,它正在工作,但是通过的行号似乎不正确。这是我为测试异常获取的堆栈:Android Crashlytics发送错误的行号,android,crashlytics,twitter-fabric,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.MainA
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*
你试过这个吗
为了使Fabric正确地消除碰撞报告的模糊,您需要
从您的配置文件中删除此行,否则我们将无法自动上载您的映射文件:
-printmapping.txt
及
-保持类com.crashlytics.*{*;}
-dontwarn com.crashlytics**
很可能是因为您使用的发布版本将删除注释/空白 如果您使用的是调试版本,那么它可能会显示正确的行,因为它不会优化您的源代码
不过我猜还有另一个原因导致行号显示不正确,因为Fabric告诉我崩溃发生在第400行,即使该函数在第300行被调用。我的意思是,如果要删除注释和空白,Fabric应该告诉line某些行小于300,而不是更多 在我的例子中,从'proguard android optimize.txt'默认proguard文件切换到'proguard android.txt'修复了这个问题。使用proguard文件的优化版本可能会带来某些风险,这似乎是其中之一 要保留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.
我有同样的问题,一个简单的观察解决了我的问题,请参阅proguard规则并取消注释这些行 (-keepattributes源文件,行号表) 及
(-renamesourcefileattribute源文件)我的设置符合这一点,问题仍然存在。发布完整的proguard文件后,我恐怕不能,但这是一个围绕结构的标准设置(遵循他们的文档)。唯一的问题是,它是基于Android SDK的一个优化,我不知道如果问题没有开始出现,因为我们切换到SDK的优化一个默认的配置。我应该试试这个!