Дооснащение не сериализует второй объект в моем классе ответа - PullRequest
1 голос
/ 17 октября 2019

Моя проблема в том, что при запуске моего приложения с выпуском APK (proguard включен) GSON не сериализует мой второй объект. Первый объект успешно сериализован. Но приложение работает в режиме отладки, все в порядке.

Мое приложение использует Retrofit2.6 и Proguard. Gradle версия - gradle: 3.5.1

Мои данные json от WebServer

 {
  "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
    }
  ]
}

А это класс Response для 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 анализируется в режиме отладки (proguard отключен). Объект Publisher имеет значение null при запуске Release APK (proguard включен).

Я действительно очень много исследую эту проблему. Но я не понимаю, в чем проблема? Есть кто-нибудь, кто может помочь?

Редактировать: Я все свои классы моделей пока держу в правилах Proguard, но здесь есть загадочная ошибка. Я не могу найти это. Почему объект Channel сериализован, а объект Publisher не сериализован?

1 Ответ

0 голосов
/ 18 октября 2019

Добавьте это в ваш proguard

-keep public class com.package.name.models.** { *; }

Примечание: - com.package.name.models - это ваш пакетимя, где находится ваш класс POJO.

Вот и все.

...