Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Crashlytics发送错误的行号_Android_Crashlytics_Twitter Fabric - Fatal编程技术网

Android 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

我正在尝试将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*
你试过这个吗

为了使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的优化一个默认的配置。我应该试试这个!