Androidとセキュリティ:Android 2.3(Gingerbread) SDKに標準搭載されたProGuardを試す - Android(アンドロイド)情報-ブリリアントサービス -
によくまとまっていたので、補足的な感じにしました。
この機能を使うには ADT8.0.0 以上 + SDK Tools, r8 が必要です
■ proguard.cfg を作成
プロジェクトを作成するとこんな感じでホーム直下に proguard.cfg が自動で作成されます。
中にはデフォルトの設定が入っています。
■ default.properties の設定
この proguard.cfg へのパスを default.properties に追加します。
構文は
proguard.config=/path/to/proguard.cfg
絶対パスか、ホーム直下からの相対パスを指定します。
この場合、proguard.cfg はホーム直下にあるので、
proguard.config=proguard.cfg
でOK
■ Export
プロジェクトを右クリックして、Android Tools -> Export Signed Application Package.. を選択して署名すればOK
# ブリリアントさんのブログにコンソールにログが出るって書いてあったんだけど、出ないんだよねー。なんか設定いるのかな?
→ Lionas さんに教えていただきました!
[Window] - [Preference] - [Android] - [Build] - [Build output] を Verbose にする
(日本語だと "環境設定->Android->ビルドの「ビルド出力」のオプションを「詳細」" らしい)
プロジェクトのあるディレクトリ内に proguard フォルダができてれば OK
中身は、dump.txt, mapping.txt, seeds.txt, usage.txt の4個
■ ProGuard リンク
ProGuard Manual
・ Overview of Keep options (-keep オプションの overview)
・ Examples section
・ Troubleshooting
# すごい簡単。Ant 使うのめんどくてやってなかったんだけど、ある意味まっててよかったw
そうそう。この機能は、SDK Tools のものなので、いわゆる Android のバージョンとは関係ありません。つまり、2.3 じゃなくても、1.6 でも 2.0 でも 2.1 でも 2.2 のアプリを作るときでも、この機能で簡単に ProGuard を使えるようになったってことなんです!
ほら、ちゃんと 1.6 でも proguard.cfg 生成されてるでしょ。
コンソールにProGuardのログが出力されない場合は、Eclipseのメニューで、環境設定->Android->ビルドの「ビルド出力」のオプションを「詳細」に設定してみてください〜。
返信削除設定したらコンソールにログがでるようになりましたー!ありがとうございます。
返信削除はじめまして。
返信削除いつも参考にさせてもらっています。
新規プロジェクトだと確かにProGuardが適用されるんですが
既存のプロジェクトだとProGuardフォルダが作成されません。。。
・・・日頃の行いが悪いからでしょうか。
自己解決です。
返信削除新規プロジェクトのproguard.cfgをコピーしてExportしたら、ちゃんと適用されました。
うーむ、「mapping.txt」を眺めてみると、Classファイルは難読化されてるけど、Interfaceファイルは難読化してくれないんですねー
返信削除そっちも難読化してくれたら良かったのにー