こんなものを手に入れた時
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
問題がどこにあるかを知り、この問題をデバッグするにはどうすればよいですか? ProGuard からのマッピング出力しか取得できず、行番号がわかりません。ありがとう。
こんなものを手に入れた時
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
問題がどこにあるかを知り、この問題をデバッグするにはどうすればよいですか? ProGuard からのマッピング出力しか取得できず、行番号がわかりません。ありがとう。
次の行をproguard構成に追加します。
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
これで、スタックトレースに行番号が含まれ、proguardに付属のリトレースツール(Android SDKに含まれています)を使用して、通常のようにデバッグできます。
これらの2つの構成オプションを使用しなかった場合でも、完全に明確ではありませんが、マッピングファイルがあれば、retraceは有用な情報を出力できることに注意してください。
注:マッピングを含むファイルは、proguard構成オプションによって生成されます。
-printmapping outputfile.txt
Android SDKに同梱されているantファイルでは、mapping.txtに設定されています。
幸運を。
Android マーケット アカウントのスタック トレースを利用する-printmappingには、ProGuard 構成のオプションで生成されたマップ ファイルを ReTrace (ProGuard コンパニオン ツール) で使用して、スタック トレースをデコードします。マップ ファイルの内容を使用して手動でデコードすることもできますが、これは面倒です。
ProGuard マニュアルの例の下に、行番号を保持する方法など、有用な難読化されたスタック トレースの生成に関するセクションがあります。
残念ながら、行番号を保持するように ProGuard を設定しなかった場合は、例外をスローしたメソッドを特定することしかできません。
スタック トレースを stack_trace.txt に貼り付けます
次のコマンドを実行します: java -jar retrace.jar classes-processed.map stack_trace.txt
retrace.jar は sdk\tools\proguard\lib\retrace.jar にあります classes-processed.map は難読化を行ったときに proguard によって生成された出力ファイルです