Android + Google Guice + ProGuard [プログラミング]
Android SDK r8から導入されたProGuardの設定をしました~。
シンプルなアプリケーションだったら設定も何もなくとっても簡単~。
ただ、一部アプリで若干はまりました。それはGoogle Guiceを使っているアプリ。
DIツールだからクラス名とか変わってしまうと困るってのは理解できますね・・・。
で、あちこち調べ、実験して、やっと動くようになったのが(proguard.cfg)次の設定
とりあえずこれで動いています。
(ちゃんとGuice側のソースコードを理解したらもっとよい方法があるのかもしれないな~と思いつつ、そこまでやっていません)
他にベストな解があったらぜひ教えてください!!
シンプルなアプリケーションだったら設定も何もなくとっても簡単~。
ただ、一部アプリで若干はまりました。それはGoogle Guiceを使っているアプリ。
DIツールだからクラス名とか変わってしまうと困るってのは理解できますね・・・。
で、あちこち調べ、実験して、やっと動くようになったのが(proguard.cfg)次の設定
-keep public class * extends com.google.inject.AbstractModule -keep class com.google.inject.** { *; } -keepclassmembers class !com.google.common.** { *; } -keepattributes *Annotation*
とりあえずこれで動いています。
(ちゃんとGuice側のソースコードを理解したらもっとよい方法があるのかもしれないな~と思いつつ、そこまでやっていません)
他にベストな解があったらぜひ教えてください!!
新しいAndroid SDKにはProGuardが標準装備されたそうです。
AndroidのOS 2.3リリースとともにAndroid SDKもr8になりました。このSDKからProGuardが標準装備になるそうです。
最初はただそれだけだと思っていました。
どこかのAndroid入門書でも以前からProGuardそのものは紹介されていたし、他のアプリケーションで難読化を使ったことがありますが、スタックトレースも難読化されてしまい結局自分たちもログメッセージが読めないため採用には気乗りしなかった・・・。
のですが、「Androidとセキュリティ:Android 2.3(Gingerbread) SDKに標準搭載されたProGuardを試す」を読んでびっくり。
難読化されたスタックトレースをデコードする方法もちゃんと提供されているらしい!!
これなら使えるじゃん!!確かProGuardそのものはどのAndroid OSでも使えるはずだし使わなきゃ損じゃないか!!
さっそく明日職場のSDKをバージョンアップしてProGuardを使うように変更しようっと。
(参考資料は毎度お世話になっているY.A.Mの雑記帳かな)
自宅の環境は今週末にバージョンアップだ・・・。
Amazon.co.jp ウィジェット
コメント 0