5

我从我的应用程序的 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
4

1 回答 1

7

ProGuard 已从混淆应用程序中删除了可选属性 SourceFile 和 LineNumberTable。结果,堆栈跟踪没有行号,导致一些歧义。ReTrace 为堆栈跟踪的每一行打印出可能的替代方案列表。

通过将以下行添加到您的 : 中,您可以获得更容易解释的堆栈跟踪proguard-project.txt

-renamesourcefileattribute MyApplication
-keepattributes SourceFile,LineNumberTable

请参阅 ProGuard 手册 > ReTrace >使用

请参阅 ProGuard 手册 > 示例 >生成有用的堆栈跟踪

于 2013-07-28T11:09:34.497 回答