Я получаю данные с сервера, он отлично работает в отладочном apk, но я пытаюсь создать подписанный apk, данные не получают данные с сервера.
Есть ли способ найти решение?
Вам необходимо добавить аннотацию @Keep
для всех ваших сетевых моделей (если вы или ваши библиотеки используют отражение). Поскольку proguard запутывает все классы в подписанном apk, и Gson не может анализировать JSON для вашей модели.
Обновлено:
например, у вас есть класс для разбора из json (класс NetworkResponse.java
):
@Keep
public class NetworkResponse {
// fields of class...
}
где мне нужно добавить аннотацию @keep, я использую библиотеку Retrofit 2 для получения данных с сервера
Вы используете gson?
Да, я использую gson
Вам нужно добавить эту аннотацию в объявление класса для каждой вашей модели. Пример Response.java
: @Keep public class Response {...
Если использовать геттер и сеттер ??
Не важно.
аннотация @keep не требуется. @SerializedName
в порядке, потому что ваш синтаксический анализатор все равно поймет, что запутанный public int jdiejwdij
отображается на ключ id
@LokeshGPLoki Мой ответ вам помог?
Proguard может быть причиной этой проблемы. Пожалуйста, проверьте, включен ли он в файле gradle вашего приложения.
Эти строки включают proguard для сборки выпуска:
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
Если да, то вам нужно будет сохранить некоторые поля.
Смотрите это: https://developer.android.com/studio/build/shrink-code
Мне нужно добавить minifyEnabled true? на самом деле я использую minifyEnabled false.
Если для minifyEnabled установлено значение false, то проблема не в proguard.
вы можете поделиться своим кодом?