我从我的应用的Google Play管理区域下载了崩溃报告,通过retrace.sh
运行以反复仿真Proguard映射,并在下面生成输出。
问题:
什么是未知来源?
showHeader
,showPhoto
等确实是我SummaryFragment
课程中的方法,但为什么它们按照显示的顺序列出?这些方法在我的代码中不遵循任何逻辑或执行顺序。
NPE实际上抛出了哪种方法?
Caused by: java.lang.NullPointerException
at com.myapp.SummaryFragment.selectMenuItemAuth(Unknown Source)
showHeader
photoButtonClicked
showPhoto
nameButtonClicked
deleteByID
access$0
at com.myapp.SummaryFragment.onActivityCreated(Unknown Source)
at android.support.v4.app.Fragment.performActivityCreated(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
moveToState
moveToState
moveToState
答案 0 :(得分:7)
ProGuard已从混淆的应用程序中删除了可选属性SourceFile和LineNumberTable。结果,堆栈跟踪没有行号,导致一些歧义。 ReTrace打印出堆栈跟踪每一行的可能替代列表。
通过向proguard-project.txt
添加以下行,您可以获得更容易理解的堆栈跟踪:
-renamesourcefileattribute MyApplication
-keepattributes SourceFile,LineNumberTable
请参阅ProGuard手册> ReTrace> Usage
请参阅ProGuard手册>例子> Producing useful stack traces