このようなものを得たとき
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 Marketアカウントからのスタックトレースを使用するには、ProGuard構成の-printmapping
オプションで生成されたマップファイルを使用して、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によって生成された出力ファイルです。
Android SDK: https://developer.Android.com/studio/build/shrink-code#decode-stackからのリトレースツールに関する公式ドキュメントへのリンクを次に示します。 -痕跡
この記事もいいです: https://medium.com/@maheshwar.ligade/de-obfuscate-stack-traces-6e19a52a3379
あなたが兄弟をコピーアンドペーストするすべての場合:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]