忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 02:15 】 |
ProGuardまとめ
Android公式ドキュメント
Proguard公式ドキュメント2

ProGuardがやること
・不要なコードの削除
・変数名、クラス名を変更して、難読化する

・リリースモードでのみ動作
・特に何もせずとも処理されるようになっている

・build.gradleに設定記述あり


android {
...

buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}



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(最適化なし)

-dontoptimize
-dontpreverify



proguard-android-optimize.txt(最適化あり)

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify



多く書いてあるのは、メソッドを削除させないようにする設定。例えば

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}


のようなもの。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に

-dontwarn
-ignorewarnings


と書けということになりそう。


詳しいページ
これ見ると、JNIだといろいろ設定がいるとのこと。
おそらく、javaコード内から呼び出されることのない、Native_***()系メソッドを全部keep指定する必要があるということだろう。

-keepclasseswithmembers class MainActivity {
public static ;
}


という感じか?(試していないので合っているかはわからない)


処理にもものすごい時間が掛かる。
しばらくやらなくていいかなという気がしてくる
PR
【2016/03/08 15:11 】 | Android | 有り難いご意見(0)
<<BuildVariants | ホーム | cocos2d-x Androidで気づくバグ>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>