Androidとセキュリティ:Android 2.3(Gingerbread) SDKに標準搭載されたProGuardを試す - Android(アンドロイド)情報-ブリリアントサービス -
によくまとまっていたので、補足的な感じにしました。
この機能を使うには ADT8.0.0 以上 + SDK Tools, r8 が必要です
■ proguard.cfg を作成
プロジェクトを作成するとこんな感じでホーム直下に proguard.cfg が自動で作成されます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQrZI0Nu7zvdJfAvWFtALB0fwpWACleRdEnFbSzfxP2EO8qUyTrXLNnT5dcab_X6q-fiaVAoLsGjZkjWDWbuX3J5Pcc4KH7yuTn8DZE2sL4ERlCf7IrfhDyAGq8QVb1z00qIhyjfi2sEQ/s400/proguard_cfg.png)
中にはデフォルトの設定が入っています。
■ default.properties の設定
この proguard.cfg へのパスを default.properties に追加します。
構文は
proguard.config=/path/to/proguard.cfg
絶対パスか、ホーム直下からの相対パスを指定します。
この場合、proguard.cfg はホーム直下にあるので、
proguard.config=proguard.cfg
でOK
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj44e9CkhJor75qRmq2pKsDuzDCmle_Mjmi8-h5PtUvPWrXQcQga18hcV8YrAaRQDYGpnxswVlhKTBl1p-phhCFMyYSbQt3leVw9dXynRHxyb-1CMFgOeFs3VEFXfTjsB2dFTnOuNOVHo4/s400/proguard_def_prop.png)
■ Export
プロジェクトを右クリックして、Android Tools -> Export Signed Application Package.. を選択して署名すればOK
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQSSx2vnBRdObG68YLG3Cu70kOrRD3kVYNuioQniKpxl7wYi-9b-z8D9QG1tFZZDD1Ymilment6EP3jj0-Fal0d0EpDtP8Af60J_Z_wc4K5k8QhKzyKIQcF3m0CaPBIj0QShTrfXcPNCs/s400/proguard_export.png)
# ブリリアントさんのブログにコンソールにログが出るって書いてあったんだけど、出ないんだよねー。なんか設定いるのかな?
→ Lionas さんに教えていただきました!
[Window] - [Preference] - [Android] - [Build] - [Build output] を Verbose にする
(日本語だと "環境設定->Android->ビルドの「ビルド出力」のオプションを「詳細」" らしい)
プロジェクトのあるディレクトリ内に proguard フォルダができてれば OK
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1dDZ4sSyDbjsRiCYqhR8qEy6HvFKXeNAJRbBsyT5XAEGKxH0UUu8QXP2LZBOW8SqN-0fEB6UIVvI3tYP0b-SRGiACBF3MJKz0Q2t10nHe5bl-6YJqh5KlgGiZjGDqk5SnhkjHkHsS8i8/s320/proguard_generate.png)
中身は、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 生成されてるでしょ。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8nNhA0XpozXWU2dWEVjn_zxo-qCpECb-n8-alVAtvSuwTAFiA339Csy3IztHLXiFJk8mib0tL2Cq263sKxLO5H0OaiPzkC8gPqTtbzSLn-TGW35_e4-bjglPmB623v7nQsAux4Zxbvjg/s400/proguard_1p6.png)
コンソールにProGuardのログが出力されない場合は、Eclipseのメニューで、環境設定->Android->ビルドの「ビルド出力」のオプションを「詳細」に設定してみてください〜。
返信削除設定したらコンソールにログがでるようになりましたー!ありがとうございます。
返信削除はじめまして。
返信削除いつも参考にさせてもらっています。
新規プロジェクトだと確かにProGuardが適用されるんですが
既存のプロジェクトだとProGuardフォルダが作成されません。。。
・・・日頃の行いが悪いからでしょうか。
自己解決です。
返信削除新規プロジェクトのproguard.cfgをコピーしてExportしたら、ちゃんと適用されました。
うーむ、「mapping.txt」を眺めてみると、Classファイルは難読化されてるけど、Interfaceファイルは難読化してくれないんですねー
返信削除そっちも難読化してくれたら良かったのにー