android - Google Gson 2.4 minifyEnable 真正的问题

标签 android gson

我正在开发一个目前使用 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/

相关文章:

java - 使用 Gson 反序列化 JSON

javascript - 使用 GSON 将 JSON 转换为 Java 对象

使用 OpenGL 处理 Android 相机帧

java - 从处理程序线程调用 FindViewById - NullPointerException

java - 已请求第 1 页,但文档只有 0 页

android - 如何修复 Android SQLITE_ERROR,错误代码 1

android - Android 中的 webStageView 本地 HTML 路径

java - 一般情况下如何实现JsonSerializer的序列化?

java - 使用 gson 为 WebClient 设置自定义编码器/解码器或 typeAdapter

java - 如何使用 GSON Streaming 避免将整个 JSON 加载到内存中?