我发现了与com.google.gson库相关的proguard问题和答案,但与com.google.code.gson:gson:2.3.1'库无关
我正在使用'com.google.code.gson:gson:2.3.1'
库。如果没有proguard,它可以正常工作,但当我启用proguard时,下面的代码给出了错误的结果。
Gson gson = new Gson();
UserDetails userDetails = gson.fromJson(response, UserDetails.class);
if (userDetails != null) {
Logger.appendInfoLog("gsonData" + userDetails, "gsonData");
Logger.appendInfoLog("gsonData" + userDetails.getCity(), "cityName");
}
在这段代码中,userDetails.getCity()返回null。
我尝试过的是:-为了防止这个库在proguard-rules.pro中混淆,我已经像这个一样声明了它
-keep class com.google.code.gson.**
但它不起作用,任何帮助都值得
UserDetails
的成员字段名称将发生更改。你必须做的是防止proguard混淆你的模型类。
例如:如果你的模型类在mypackage.model包中,你可以添加规则:
-保留类mypackage.model.**{*;}
-keepclassmembers类mypackage.model.**{*;}
UserDetails中的每个字段都有@SerializedName()注释吗?Proguard会混淆所有名称(类/字段/方法名称),因此gson不会在类中找到字段。