ProGuardは、コードを削減、最適化、および難読化するためのユーティリティです。 その結果、* .apkが小さくなり、リエンジニアリングがはるかに困難になります。
developer.android.comでは、ProGuardはAndroidアプリケーションのビルドシステムに埋め込まれていると書かれています。 しかし、r9にアップグレードした後にのみ、このユーティリティがSDKフォルダーに表示されることに気付きました。
ProGuardは、「リリース」モードでビルドを実行したときにのみ起動します。 これを行う方法がわからない人(Eclipse):プロジェクトのコンテキストメニューを右クリックし、[
エクスポート ]
-> [Android]-> [Androidアプリケーションのエクスポート]を選択します 。 プロジェクトを作成すると、構成ファイルはルートに
proguard.cfgという名前で
自動的に表示されます。 お持ちでない場合は、SDKを含むフォルダー内のユーティリティを確認してください。
次に、アセンブリの前に難読化ツール自体を有効にするには、
proguard.config = / path / proguard.cfgの形式の行を
/root_of_your_project/default.propertiesファイルに追加する必要があり
ます。pathはファイルへのパスです。 したがって、多数のプロジェクトの1つの構成をドラッグできます。
そのため、アセンブリの「リリース」後、ProGuardは次のいずれかのフォルダーで少し汚れます。
- / root_of_your_project / proguard -Eclipseを使用する場合
- / root_of_your_project / bin / proguard -Antを使用する場合
ファイルが作成されます:
- dump.txt- * .apkのすべてのクラスファイルの内部を説明します
- mapping.txt-ソースと難読化されたクラス、クラスフィールド、メソッド間のマッピングを表します。
- seeds.txt-焦点の合っていないクラスのリスト
- usage.txt- * .apkから取得したコード
また、developer.android.comでは、ProGuardコードを処理する際に、
ClassNotFoundExceptionの形で合併症が発生する可能性があると警告しています。 これを回避するには、構成に行を追加できます。
-keep public class <MyClass>
設定の詳細については、
こちらをご覧ください 。 実際、そこには
いくつかのサンプルがあります 。
さらに、フォルダー/ path_to_your_SDK / tools / proguard / binには、
retrace.batと呼ばれる特定のスクリプトがあり
ます (Linux / Mac OS Xの場合
-retrace.sh )。 上記の
mapping.txtを使用して、難読化されたものを読み取り可能に変換できます。
使用構文:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
例:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
スクリプトが<stacktrace_file>へのパスを書き込むのが面倒な場合、標準の手動テキスト入力も受け入れます。
ProGuard(デフォルト設定)を使用して「リリース」モードで最初に起動したときにエラーコード1が飛んでいる場合、SDKへのパスにスペースが含まれている可能性があります。
難読化をお楽しみください!