とりあえず自分用メモ。
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の方が何倍も効率が良いはず。
てな感じの結果に。
どのみち、いずれソースをオープンにすると明言しているんだから難読化する必要は無い。てことで、両方ともデフォルトのままで運用することに決定。