Android重要性崩溃日志反混淆指向错误行号

4
自从我们开始使用Google Play的应用签名(https://support.google.com/googleplay/android-developer/answer/7384423)并上传AAB而不是APK后,我们的崩溃日志反混淆就无法正常工作。我们过去需要手动上传映射文件,但现在似乎不再需要了。
例如,这是我们当前版本中最常见的崩溃群集(发布超过一周)。这个崩溃来自今天早上,因此自动解决的映射文件应该已经存在(我从跟踪中删除了包和类名)。
java.lang.NullPointerException: 
  at [REMOVED].onCreateView ([REMOVED].java:44)
  at android.support.v4.app.Fragment.performCreateView (Fragment.java:20)
  at android.support.v4.app.FragmentManagerImpl.a (FragmentManagerImpl.java:584)
  at android.support.v4.app.FragmentManagerImpl.f (FragmentManagerImpl.java:38)
  at android.support.v4.app.FragmentManagerImpl.a (FragmentManagerImpl.java:46)
  at android.support.v4.app.FragmentManagerImpl.e (FragmentManagerImpl.java:4)
  at android.support.v4.app.FragmentManagerImpl.o (FragmentManagerImpl.java:6)
  at android.support.v4.app.FragmentController.f (FragmentController.java:4)
  at android.support.v4.app.FragmentActivity.onStart (FragmentActivity.java:15)
  at android.support.v7.app.AppCompatActivity.onStart (AppCompatActivity.java)
  at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1395)
  at android.app.Activity.performStart (Activity.java:7348)
  at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3145)
  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:180)
  at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:165)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1955)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7078)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:964)

当我尝试调试这个自定义片段时,我注意到第44行是一个空行,甚至不在OnCreateView生命周期方法内,这使得这个堆栈跟踪非常无用。
有其他人遇到过同样的问题吗?任何建议都将不胜感激。

我也遇到了同样的情况。在崩溃堆栈跟踪中,Android Vitals 显示了正确的类和方法反混淆名称,但行号太少,例如 MyClass.java:2,可能对应于缩小后的 AAB 中的行。 也许解决方案可以是建议使用 Crashlytics? - Salvador
我不确定我是在哪个 Stack Overflow 的答案中找到的,但有人指出你需要为 AABs 添加以下行 -useuniqueclassmembernames -renamesourcefileattribute SourceFile -keepattributes SourceFile, LineNumberTable,这至少解决了我的崩溃日志问题。 - alexgophermix
1个回答

0
为了在Android vitals堆栈跟踪中拥有正确的行号,在用于生成AAB文件的proguard-rules.pro中,我添加了以下规则:
-keepattributes LineNumberTable,SourceFile

正如alexgophermix所建议的那样。 有关解码混淆的堆栈跟踪的更多细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接