2016-09-04 4 views
3

はproguard-rules.proProGuardのはdoesntのスタックトレースの行番号とメソッド名を保存ここで

-keepattributes *Annotation* 
-keepattributes Signature 
-keepattributes InnerClasses,EnclosingMethod 
-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 
-keep public class * extends java.lang.Exception 
-dontwarn org.apache.http.** 

Logcat出力からの数行は、(私のソースファイルは100行が長くなっているときにエラー行番号は、1133と表示されているされています)

09-04 16:11:46.698 3827-5280/com.XX.main E/AndroidRuntime: FATAL EXCEPTION: IntentService[ActivityRecognizedTracker] 
Process: com.XX.main, PID: 3827 
java.lang.NullPointerException: Attempt to read from field 'double com.XX.trips.Trip.a' on a null object reference 
at com.XX.ActivityRecognizedTracker.onHandleIntent(SourceFile:1133) 

私は、行番号とソースファイルの属性を保持していますが、スタックトレースがまだ不明瞭化されています。私は間違って何をしていますか?

答えて

6

AFAIKコードを難読化することはできず、元のスタックトレースはありません。したがって、元のメソッドとクラス名をスタックトレースに表示するには、-dontobfuscateルールを追加する必要があります。

しかし、元のスタックトレースは本当に必要ありません。

-keepattributes SourceFile,LineNumberTableを使用しており、unambiguously retrace the stacktraceが可能です。生成されたmapping.txtファイルを保存することを忘れないでください。

また、-renamesourcefileattribute SourceFileを削除すると、元のファイル名がかっこで表示されます。行番号はすでに存在しているので、例外が実際にどこで起こったかを調べずに把握できるはずです。

+0

ありがとうございます!あなたは私が必要としていたものを正確に手伝ってくれました。 –

関連する問題