我在当前使用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示例配置文件,但没有任何区别。
您需要告诉proguard保留类(字段和方法),这将在gson上进行序列化/验证。
例如,如果您在软件包com.google.gson.examples.android.model
中都有所有模型,则需要将以下规则添加到Proguard
-keep class com.google.gson.examples.android.model.** { *; }
请查看这个Gson Proguard官方示例,并尝试在项目中使用这些规则。