質問

このようなものを手に入れたとき

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に含まれる)に出荷されるRetraceツールを使用すると、通常のようにデバッグできます。

これらの2つの構成オプションを使用していなくても、マッピングファイルを持っている場合、完全に明確ではありませんが、Retraceが有用な情報を出力できることに注意してください。

注:マッピングを備えたファイルは、Proguard構成オプションによって作成されます。

 -printmapping outputfile.txt

Android SDKに出荷されたANTファイルでは、Mapping.txtに設定されています。

幸運を。

他のヒント

Androidマーケットアカウントからスタックトレースを使用するには、マップファイルを使用して、-printmapping Proguard Configのオプション、Retrace(Proguard Companion Tool)を使用して、スタックトレースをデコードします。マップファイルの内容を使用して手でデコードすることもできますが、これは退屈です。

例の下のProguardマニュアルには、ライン番号を保持する方法を含む有用な難読化されたスタックトレースの作成に関するセクションがあります。

残念ながら、ライン番号を保持するようにProguardを設定しなかった場合、例外をスローする方法のみを識別することができます。

stack_trace.txtにスタックトレースを貼り付けます

次のコマンドを実行します:java -jar retrace.jar classesprocessed.map stack_trace.txt

Retrace.jarはsdk tools proguard lib retrace.jar classes-processed.mapにあります。

Android SDKのRetraceツールに関する公式ドキュメントへのリンクを次に示します。 https://developer.android.com/studio/build/shrink-code#decode-stack-trace

この記事も良いです: https://medium.com/@maheshwar.ligade/de-obfuscate-stack-traces-6e19a52a3379

あなたがコピーして兄弟をコピーするすべてのために:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top