gson fromjson在proguard之后返回null

n53p2ov0  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(416)

我们使用proguard来混淆java应用程序。我们有一些pojo类,其中gson用于在运行时从json创建这些对象

package com.example.app;
public class AppConfiguration {

  private String name;
  private String title;
  private String details;
}

AppConfiguration configuration = new Gson().fromJson(value, AppConfiguration.class);

在与proguard混淆之后,配置返回null。我使用了keep选项来保留appconfiguration,但是没有帮助
progarud选项

-keep class com.example.app.AppConfiguration
nwlqm0z1

nwlqm0z11#

gson fromjson需要pojo类成员。所以我们需要保留所有的成员变量。以下proguard keep选项保留appconfiguration的所有属性
字段序列化名称

@SerializedName("keyType")
String keyType;

proguard配置

-keepclassmembers,allowobfuscation class * {
    @com.google.gson.annotations.SerializedName <fields>;
}

-保留,allowAfusation@interface com.google.gson.annotations**
如果您没有机会更改类,可以使用以下keep选项

-keepclassmembers class com.example.app.AppConfiguration {
        public protected private *;
        #Keep default members & functions
        !public !protected !private *;
    }

相关问题