Android 改装不';t序列化响应类中的第二个对象

Android 改装不';t序列化响应类中的第二个对象,android,gson,retrofit2,proguard,okhttp,Android,Gson,Retrofit2,Proguard,Okhttp,我的问题是,在使用release APK(proguard已启用)运行我的应用程序时,GSON不会序列化我的第二个对象。第一个对象已成功序列化。但是,应用程序在调试模式下运行,一切正常 我的应用程序使用2.6和Proguard。Gradle版本是Gradle:3.5.1 来自Web服务器的我的json数据 { "error": false, "contents": [ { "id": 1, "channel": { "id": 7,

我的问题是,在使用release APK(proguard已启用)运行我的应用程序时,GSON不会序列化我的第二个对象。第一个对象已成功序列化。但是,应用程序在调试模式下运行,一切正常

我的应用程序使用2.6和Proguard。Gradle版本是Gradle:3.5.1

来自Web服务器的我的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
    }
  ]
}
这是改装的响应级别

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;
    }

}
调试模式(禁用proguard)时正在分析发布服务器对象。发行者对象在发行版APK运行时为空(已启用proguard)

我真的很研究这个问题。但我不明白问题是什么?有人能帮忙吗


编辑:我现在把所有的模型类都保存在Proguard规则中,但这里有一个神秘的错误。我找不到它。为什么频道对象已序列化,但发布者对象未序列化?

将此添加到proguard中

-保留公共类com.package.name.models.*{*;}

注意:-com.package.name.models-这是POJO类所在的包名


就这样。

如果没有其他答案,我会将其标记为正确答案。我只是想知道。通道对象已序列化,但发布者对象未序列化。
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
-keepattributes *Annotation*