2014-01-11 18 views
6

私はAndroidアプリからスタックトレースをdeobfucateしようとしています。私はアプリを構築するときにプロガードを使用し、リトレースを実行することは多かれ少なかれ動作するようです。Proguard retrace行番号がありません

動作しないのは、行番号をデコードすることです。出力に行番号は表示されず、各 "at"にいくつかの選択肢がリストされています。これは私のスタックトレースです

-keepattributes LineNumberTable 
-assumenosideeffects class android.util.Log { 
    public static int v(...); 
    public static int d(...); 
} 

:ここ

は私のProGuardの-project.txtファイルです

uncaught exception 
java.lang.NullPointerException 
at com.myapp.myapp.dbaccess.ag.a(Unknown Source) 
at com.myuapp.myapp.dbaccess.x.a(Unknown Source) 
at com.myapp.myapp.dbaccess.x.a(Unknown Source) 
at com.myapp.myapp.main.ab.run(Unknown Source) 

そして、ここでは、出力されます。

uncaught exception 
java.lang.NullPointerException 
at com.myapp.myapp.dbaccess.ZNodeCache.com.myapp.myapp.dbaccess.ZNode getNodeFromCache(long)(Unknown Source) 
              com.myapp.myapp.dbaccess.ZRoot getRootFromCache() 
              com.myapp.myapp.dbaccess.ZNode getNodeFromDb(long,boolean) 
              com.myapp.myapp.dbaccess.ZNode$Array getChildrenForExport(com.myapp.myapp.dbaccess.ZNode) 
              ... many more ... 
at com.myapp.myapp.dbaccess.XmlImport.com.myapp.myapp.dbaccess.XmlImport$Results importFile(java.lang.String)(Unknown Source) 
              void _doImport(java.io.InputStream,com.myapp.myapp.dbaccess.XmlImport$Results) 
              void importFile(java.io.InputStream) 
              void importNode(org.xmlpull.v1.XmlPullParser,com.myapp.myapp.dbaccess.ZNode) 
              ... many more ... 
at com.myapp.myapp.dbaccess.XmlImport.com.myapp.myapp.dbaccess.XmlImport$Results importFile(java.lang.String)(Unknown Source) 
              void _doImport(java.io.InputStream,com.myapp.myapp.dbaccess.XmlImport$Results) 
              void importFile(java.io.InputStream) 
              void importNode(org.xmlpull.v1.XmlPullParser,com.myapp.myapp.dbaccess.ZNode) 
              ... many more ... 
at com.myapp.myapp.main.MainActivity$3.void run()(Unknown Source) 

私がでなければなりません別の設定パラメータがありません。何か案は?

答えて

23

答えはAndroidのドキュメントにあります(信じているかどうか)。私は初めてそれを逃したと思う。あなたはこのように、ソースファイルを指定する必要があります。

-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 

renamsesourcefileattributeは、すべてのソースファイルが名前SOURCEFILE(またはものは何でも入れ)を持つことになります。 "retrace"はソースファイル名が何であるかは気にしませんが、省略した場合は行番号を無視することにします。

これはproguard-project.txtにあります。Android Studioを使用している場合は、「あなたのプロジェクト」.appにあります。

+2

あなたの答えは、追加のラインを含むhttp://proguard.sourceforge.net/manual/examples.html#stacktraceにつながっています.printmap out.map – Mick

+0

どのファイルにこれらの行を挿入しましたか? Android Studioの 'proguard-rules.pro'ファイルで試しましたが、行番号はまだ表示されません。 – codelearner

+0

In proguard-project.txt –

関連する問題