× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
Android公式ドキュメント
Proguard公式ドキュメント2 ProGuardがやること ・不要なコードの削除 ・変数名、クラス名を変更して、難読化する ・リリースモードでのみ動作 ・特に何もせずとも処理されるようになっている ・build.gradleに設定記述あり
minifyEnabled を true にすると、ProGuardが実行される proguardFiles getDefaultProguardFile('proguard-android.txt'), 行は、proguardの詳細設定が描いてあるファイル名を指定。 ANDROID_SDK_ROOT/tools/proguard/ 以下のファイル名を指定する。 proguard-android.txt の他に、最適化を含んだ設定ファイルとして proguard-android-optimize.txt というものも設定できるようだ。 ちなみに2つのファイルの差分は以下だけ proguard-android.txt(最適化なし)
proguard-android-optimize.txt(最適化あり)
多く書いてあるのは、メソッドを削除させないようにする設定。例えば
のようなもの。Javaコード上では使われていないが、xmlから呼び出すために必要なメソッド、のようなことらしい さて、build.gradleの記述に戻る 'proguard-rules.pro' と書いてある行があるが、これはプロジェクトディレクトリ内にあり、 プロジェクト固有の設定を書くファイル。(proはprojectのことのようだ) また、ProGuard処理をすると、 build/outs/mapping.txt というファイルが生成される。 これを使うと、難読化したスタックトレースを元に戻すことができる。 $ cd $ANDROID_SDK_ROOT/tools/proguard $ retrace.bat -verbose mapping.txt obfuscated_trace.txt さて、実際にやってみたところ、エラーが出た 調べると、結局proguard-rules.proに
と書けということになりそう。 詳しいページ これ見ると、JNIだといろいろ設定がいるとのこと。 おそらく、javaコード内から呼び出されることのない、Native_***()系メソッドを全部keep指定する必要があるということだろう。
という感じか?(試していないので合っているかはわからない) 処理にもものすごい時間が掛かる。 しばらくやらなくていいかなという気がしてくる PR |
|