谷歌Gson 2.4 minifyEnable真正的问题

时间:2017-02-21 13:57:16

标签: android gson

我正在使用目前使用google gson 1.7.1 lib的应用。一切正常,但我想将其更新到最新版本。尝试将其更新为2.4,并在应用程序的调试变体上运行良好。

我最近尝试在发布版本上运行应用程序,突然JSON解析机制无效。将gson lib恢复为1.7.1可以解决问题,但我仍然希望将其更新到最新版本。

我注意到的是,如果我在发布版本上将minifyEnabled设置为false,我会再次开始获取数据(解析机制可以正常工作)。

是否有人知道有关minifyEnabled true和最新gson lib的问题?

在我的proguard-rules文件中,我有以下与gson lib相关的项目:

-keepclassmembers class com.myapp.data.beans.json.** {
    private <fields>;
}
-keep class sun.misc.Unsafe { *; }
-keep class com.myapp.ui.views.** { *; }
-keepattributes Signature
-keepattributes *Annotation*

我也尝试添加

-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

根据Google Gson示例config文件,但它没有任何区别。

1 个答案:

答案 0 :(得分:2)

你需要告诉proguard保留类(字段和方法)以及将通过GSON序列化/反序列化。

例如,如果您在包com.google.gson.examples.android.model中包含所有模型,则需要将以下规则添加到proguard

-keep class com.google.gson.examples.android.model.** { *; }

查看this Gson proguard official example,然后尝试在项目中使用这些规则。