2011年03月07日

Proguard調査

とりあえず自分用メモ。

Gingerbreadのaospの環境で、Proguardを有効にした状態のバイトコードを確認してみた。

Proguardを有効にするには、Android.mkに下記を追加。

LOCAL_PROGUARD_ENABLED:= full
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags

ローカルのproguard.flagsに、オプションを書く。

build/core/proguard.flagsにデフォルトのオプションが書いてある。-dontoptimize,-dontobfuscateがデフォルトで有効になっているので、このままだと不要コードが削られるだけで、難読化も最適化も行われない。

-dontobfuscateを無効にして、難読化をかけてみる。
→Jotaみたいにaospを下敷きにしているアプリでは、インナーメソッドの呼出が難読化されるため、クラスのロードで失敗する。TextView関連を全部除外するのは途方もないので、実質使えない。

-dontoptimizeを無効にして、最適化をかけてみる。

→baksmaliで逆アセンブルして比較してみても、バイトコードにはほぼ変化が見られず。サイズもほぼ変わりなし。クラッシュレポートと引き替えに出来るほどのパフォーマンスアップはなさそう。そもそもバイトコードの最適化よりもJITの方が何倍も効率が良いはず。

 

てな感じの結果に。

どのみち、いずれソースをオープンにすると明言しているんだから難読化する必要は無い。てことで、両方ともデフォルトのままで運用することに決定。

posted by Jiro at 00:27 | Comment(0) | TrackBack(0) | 日記
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/43720585
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック