web-dev-qa-db-ja.com

Android St​​udioはProGuardマッピングファイルをどこに保存しますか?

Android St​​udioでは、署名済みAPKのコンパイル後に生成されたProGuardマッピングファイルはどこにありますか?

それが機能していないのか、ファイルパスを忘れただけなのかはわかりませんが、強制的なGoogle/Stack Overflow検索ではこれに答えませんでした

149
CQM

アプリケーションモジュールのディレクトリのbuild/outputs/proguard/release/mapping.txtに配置する必要があります。

ProGuardおよびAndroid St​​udioの最新バージョンでは、ファイルはbuild/outputs/mapping/release/mapping.txtにあります。

217
Scott Barta

私にとっては、'build/outputs/mapping/release'にあります

71
Tom

Mapping.txtファイルをbuild/ディレクトリツリー以外の場所に書き込むようにproguardを構成すると、バージョン管理にさらに便利にチェックインできるようになりました。

これを実現するには、これをproguard-rules.proファイルに入れます:

-printmapping mapping.txt

これにより、(ほとんどの場合)proguard-rules.proファイルと同じディレクトリに配置されます。最終的には、おそらくAPKファイルと同じディレクトリに、同等の名前(フレーバー、ビルドタイプなどが含まれる場合があります)で書き込む必要があります。

注:私の経験では、これはnotproguardテンプレートファイル(他のコメンターによって提案されました answer ここに)。

更新:複数の製品フレーバーがある場合、これははるかに優れたソリューションです。 https://stackoverflow.com/a/31116608/444761

36
Mark

生成されていないことがわかったので、これをルールファイルに追加しました

-printmapping build/outputs/mapping/release/mapping.txt
34
Clive Jefferies

バージョンAndroid Studio 2.2.2を使用しています。私にとっては、次の場所にあります。

デバッグの場合:\app\build\outputs\mapping\debug\mapping.txt

リリースの場合:\app\build\outputs\mapping\release\mapping.txt

12
Faisal Shaikh

enter image description here

これは図にあります-マッピングフォルダーにあります:

9
Simon

この質問に答えるのはかなり遅いですが、誰かが私の答えを必要とする場合に備えて。

難読化解除するマッピングファイルの場所:

ProGuardはファイルをアプリに保存しますapp/build/outputs/mapping/FLAVOR/release/mapping.txt

通常、デバッグモードでは難読化が無効になっているため、マッピングファイルは必要ありません。そうでない場合は、build.gradleファイルにデバッグバリアント用のコードがあることを確認してください。

debug {
    minifyEnabled false
    debuggable true
}

いくつかの落とし穴:

mapping.txtファイルは、ProGuardでリリースビルドを作成するたびに上書きされるため、新しいリリースを作成する前にまずそのファイルのバックアップを作成してください。アプリの古いバージョンからのスタックトレースを難読化するのに役立ちます。

それとは別に、コードを難読化するには2つの方法があります。

1。mapping.txtファイルをGoogle Play Consoleにアップロードします:

Google Playでアプリを公開するとき、APKの各バージョンのmapping.txtファイルをアップロードできます。その後、Google Playはユーザーから報告された問題から着信スタックトレースの難読化を解除し、Google Playコンソールで確認できるようにします。

2。ローカルSDKツールretrace.sh/retrace.batを使用:

アプリのリリースバージョンを(ビルドバリアントをリリースに変更して実行することで)実行して、本番環境(プレイストアにリリースされた場合)で発生しないようにエラーをクロスチェックおよび修正したい場合があります。

難読化されたスタックトレースを読み取り可能なスタックトレースに変換するには、retraceスクリプトを使用します(Windowsではretrace.bat、Mac/Linuxではretrace.sh)。

<sdk-root>/tools/proguard/bin/ディレクトリにあります。

<sdk-root>は、すべてのAndroidライブラリとSDKがインストールされた場所です。

このスクリプトは、mapping.txtファイルとスタックトレースを取得して、新しい読み取り可能なスタックトレースを生成します。

コマンド構文:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

例:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

生産エラーを事前にチェックするのに非常に便利なので、ローカルバージョンの難読化の方が好きです。

役に立てば幸いです。

9
WitVault

だれかがファイルの場所を教えても、私は愚かで迷子になるからです。

cd StudioProjects/fooProject
find . -name "mapping.txt" | xargs less
2
philo