KonifarPod

Proguardを使っている時のgsonのエラー

   

Pocket

proguardを使ってビルドした後、gsonの部分でエラーが発生しました。

 

08-22 00:40:38.792 4894-4894/com.konifar W/AQuery﹕ reporting:java.lang.RuntimeException: Missing type parameter.
 at com.google.gson.reflect.TypeToken.getSuperclassTypeParameter(SourceFile:84) at com.google.gson.reflect.TypeToken.(SourceFile:62)

 

stacktraceを見てみると、該当部分のコードはこんな感じ。

Type collectionType = new TypeToken<List<String>>() {}.getType();

 

StackOverFlowを見ると、どうやらgsonを使っている場合は下記の記述をproguardファイルに書かなければいけないようです。

 

# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.-keepattributes Signature

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

 

この記述を書いてビルドしたところ、うまく動きました。

 

Pocket

 - Develop , ,