使用GSON时的Proguard问题

时间:2013-05-15 11:32:43

标签: android json gson

我在我的应用程序中使用Gson,为此,我使用的名称与使用Json的名称相同。我的应用程序运行良好,但在编写proguard时,应用程序崩溃,我猜有些类正在缩小。 我的错误是:

  

java.lang.ClassCastException:com.google.gson.internal.StringMap无法强制转换为com.sample.package.GsonClass

2 个答案:

答案 0 :(得分:21)

您需要将这些行添加到您的proguard中,以便在签署您的应用时保留gson类。

##---------------Begin: proguard configuration for Gson  ----------
# 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.** { *; }

##---------------End: proguard configuration for Gson  ----------

答案 1 :(得分:2)

另一个原因是:使用前

List<T> list = gson.fromJson(jsonString, type);

你应该构造正确的typeToken,如下所示:

Type type = new TypeToken<List<T>>(){}.getType();
List<T> list = gson.fromJson(jsonString,type)