2011年12月12日月曜日

ProGuardを使う

というわけで、必要になったのでProGuardを使ってみた。

基本的な情報はWebでいろいろ拾える。参考にしたのは

  • http://y-anz-m.blogspot.com/2010/10/androidlvl-securing-android-lvl.html
  • http://d.hatena.ne.jp/bs-android/20101207/1291702021
  • http://d.hatena.ne.jp/hyoromo/20101120/1290216449
このあたり。

で、いざ実践してみてハマったところとか気がついたところをまとめておく。

まず、上記参考URLの情報では、"default.properties"にパスを追加するということが書かれているのだが、これではProGuardが走らなかった。
正解は"project.properties"の方に書く。
実際に新しいプロジェクトを作成して見るとそうなっているので、そのまま持ってくるようにすれば良い。

proguard.cfg自体はEclipse上でコピー&ペーストすればOK。

んで、どっかで外部ライブラリは難読化されないと書いてた気がするんだけど、
自分で作った物はちゃんと難読化されている様子。
今回だとLVL(Licensing Verification Library)を併用しているんだけど、
そっちのクラスが難読されている様子が、mapping.txtにはき出されていた。

そして難読化してはいけないもの。
JNI関係は難読化してはいけない、というのは上記参考URLにも書いてある。
これは具体的には"native"接頭辞を付けたメソッドを宣言しているクラスをkeepに指定すれば良い。
逆にこれを難読化すると、JNIのメソッドが一切呼ばれなくなる。エラーは吐かないのでわかってないとハマるかも。
LVLは特に書かなくても動いてるなー。あとでなんか問題でてくるかも?
もしくはデフォルトで書いてある

-keep public class com.android.vending.licensing.ILicensingService

という指定で行けてるような気がする。

0 件のコメント:

コメントを投稿