我的问题是,当使用APK发布版运行我的应用程序时,GSON没有序列化我的第二个对象。成功地序列化了第一个对象。但是,应用程序在调试模式下运行,一切都很好。
我的应用程序使用Retrofit2.6和Proguard。Gradle版本是gradle:3.5.1
来自WebServer的json数据
{
"error": false,
"contents": [
{
"id": 1,
"channel": {
"id": 7,
"language_id": 1
},
"publisher": {
"id": 1,
"name": "Name of Publisher"
},
"title": "Some title",
"description": "This is description",
"subscribed": false
}
]
}这是Retrofit的响应类
public class GetContentsResponse{
@SerializedName("error")
@Expose
private boolean mError;
@SerializedName("contents")
@Expose
private List<Content> mContents;
}
public class Content {
@SerializedName("id")
@Expose
private int mId;
@SerializedName("channel")
@Expose
private Channel mChannel;
@SerializedName("publisher")
@Expose
private Publisher mPublisher;
@SerializedName("title")
@Expose
private String mTitle;
@SerializedName("description")
@Expose
private String mDescription;
@SerializedName("subscribed")
@Expose
private boolean mSubscribed;
public int getId() {
return mId;
}
public Channel getChannel() {
return mChannel;
}
public String getTitle() {
return mTitle;
}
public String getDescription() {
return mDescription;
}
public boolean isSubscribed() {
return mSubscribed;
}
public Publisher getPublisher() {
return mPublisher;
}
}这是我的守卫规则
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
-keepattributes *Annotation*Publisher对象在调试模式时正在解析(已禁用保护程序)。发行版APK运行时,Publisher对象为空(已启用保护)。
我非常认真地研究这个问题。但我不明白问题是什么?有人能帮忙吗?
编辑:我现在把我所有的模型类都保存在Proguard规则中,但是这里有一个神秘的错误。我找不到了。为什么通道对象序列化,但是Publisher对象没有序列化?
发布于 2019-10-18 18:22:26
把这个加进你的护卫里
`-保持公共类com.package.name.models. { *;}`**
注意:- com.package.name.models -这是您的POJO类所在的包名。
就这样。
https://stackoverflow.com/questions/58422927
复制相似问题