我正在开发一个目前使用 google gson 1.7.1 lib 的应用程序。一切正常,但我想将其更新到最新版本。尝试将其更新到 2.4,并且在应用程序的调试变体上运行良好。
我最近尝试在发布版本上运行该应用程序,突然发现 JSON 解析机制无法正常工作。将 gson 库恢复到 1.7.1 可以解决这个问题,但我仍然希望将它更新到最新版本。
我注意到,如果我在发布版本上将 minifyEnabled
设置为 false
,我会再次开始获取数据(解析机制有效)。
有人知道关于 minifyEnabled true
和最新的 gson lib 的问题吗?
在我的 proguard-rules 文件中,我有以下与 gson 库相关的项目:
-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文件,但它没有任何区别。
最佳答案
您需要告诉混淆器保留类(字段和方法),这些类将通过 GSON 进行序列化/反序列化。
例如,如果您的所有模型都在 com.google.gson.examples.android.model
包中,则需要将以下规则添加到 proguard
-keep class com.google.gson.examples.android.model.** { *; }
看看this Gson proguard official example ,并尝试在您的项目中使用这些规则。
关于android - Google Gson 2.4 minifyEnable 真正的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42369327/