Android
Proguard

この前書いたProguard一覧

More than 1 year has passed since last update.

まあ、探せばいくらでも出てくるんですが、宣伝もかねて。

https://play.google.com/store/apps/details?id=com.collection.wather.weathertools

本当はもっといろいろ作っていたのだけれども、完成の日の目を見たいがために機能を削りまくってます。その結果、意味をなしていないProguardも備忘録を兼ねて記しておきます。


Glide

画像ライブラリ

Picassoと悩んだのですが、こちらの記事でGlideにしました。

http://qiita.com/rejasupotaro/items/ead90beaeaa2a6eace35

-keep public class * implements com.bumptech.glide.module.GlideModule

-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;


Gson

パーサー

ここに書かれているものだけではだめで、デシリアライズしたデータを格納するクラスもkeepを忘れずにしないといけません。

-keep class com.google.gson.**

-keepattributes *Annotation*
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }


OkHttp

通信ライブラリ

いわずもがな。

-dontwarn java.nio.file.*

-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement


Retrofit

通信ライブラリ

GsonとOkHttpと組み合わせて使ってます。

-dontwarn retrofit2.**

-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-dontwarn com.google.appengine.api.urlfetch.*


Maps

グーグルマップ

地図を表示させたかったんです。

-keep class com.google.android.gms.maps.** { *; }

-keep interface com.google.android.gms.maps.** { *; }


Crashlitics

クラッシュ解析

いまならfirebaseの方がいいかも。

-keep class com.crashlytics.** { *; }

-dontwarn com.crashlytics.**


ButterKnife

View Injectionライブラリ

v7からか?これを使うとビルドがすこぶる遅くなったので速攻で消去しました。

-keep public class * implements butterknife.internal.ViewBinder { public <init>(); }

-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
-keepclasseswithmembernames class * { @butterknife.* <fields>; }


Twitter4J

Twitter非公式ライブラリ

楽になりますね。

-dontwarn twitter4j.management.**

-dontwarn twitter4j.TwitterAPIMonitor
-dontwarn twitter4j.internal.**
-dontwarn twitter4j.Annotation
-keep class twitter4j.** { *; }


おわりに

proguardの設定はデバックビルドだと気づけないので、意外とはまるポイントの1つですね。gradleでsyncしたときに自動で挿入されるようになるといいですね。