来自Json的Gson在Proguard之后返回null



我们正在使用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。我使用了保留选项来保留AppConfiguration,但没有帮助

Progarud选项

-keep class com.example.app.AppConfiguration
Json的Gson需要POJO类成员。所以我们需要保留所有的成员变量。(如果没有Proguard,则会混淆此属性(。以下proguard保留选项保留AppConfiguration 的所有属性

字段序列化名称

@SerializedName("keyType")
String keyType;

proguard配置

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

-keep,allowfuzzy@interfacecom.google.gson.annotations.**

如果你没有机会更改类别,你可以使用以下保留选项

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

最新更新