2010年12月8日水曜日

Android Eclipse から ProGuard を使ってみた。

proGuard を訳そうかな、と思ったんだけど、

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 生成されてるでしょ。








 

5 件のコメント:

  1. コンソールにProGuardのログが出力されない場合は、Eclipseのメニューで、環境設定->Android->ビルドの「ビルド出力」のオプションを「詳細」に設定してみてください〜。

    返信削除
  2. 設定したらコンソールにログがでるようになりましたー!ありがとうございます。

    返信削除
  3. はじめまして。
    いつも参考にさせてもらっています。

    新規プロジェクトだと確かにProGuardが適用されるんですが
    既存のプロジェクトだとProGuardフォルダが作成されません。。。
    ・・・日頃の行いが悪いからでしょうか。

    返信削除
  4. 自己解決です。
    新規プロジェクトのproguard.cfgをコピーしてExportしたら、ちゃんと適用されました。

    返信削除
  5. うーむ、「mapping.txt」を眺めてみると、Classファイルは難読化されてるけど、Interfaceファイルは難読化してくれないんですねー
    そっちも難読化してくれたら良かったのにー

    返信削除