2013-07-25 35 views
5

我從我的應用的Google Play管理員區域下載了一個崩潰報告,通過retrace.sh運行它以去混淆Proguard映射,並生成下面的輸出。如何解讀反混淆的Android崩潰報告?

問題:

什麼是財產來源不明?

showHeadershowPhoto等確實是我的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 

回答

7

ProGuard從混淆應用程序中刪除了可選屬性SourceFile和LineNumberTable。結果,堆棧軌跡沒有行號,導致一些模糊性。 ReTrace爲堆棧跟蹤的每一行打印出可能的備選列表。

你可以得到更易於通過添加以下行到proguard-project.txt解釋堆棧跟蹤:

-renamesourcefileattribute MyApplication 
-keepattributes SourceFile,LineNumberTable 

見的ProGuard手冊>回掃>Usage

請參閱ProGuard手冊>示例>Producing useful stack traces