Получение данных с сервера приложений в режиме отладки, но не работает в режиме выпуска

Я получаю данные с сервера, он отлично работает в отладочном apk, но я пытаюсь создать подписанный apk, данные не получают данные с сервера.

Есть ли способ найти решение?

вы можете поделиться своим кодом?

Srinivasan M 26.10.2018 09:24
0
1
868
2

Ответы 2

Вам необходимо добавить аннотацию @Keep для всех ваших сетевых моделей (если вы или ваши библиотеки используют отражение). Поскольку proguard запутывает все классы в подписанном apk, и Gson не может анализировать JSON для вашей модели.

Обновлено: например, у вас есть класс для разбора из json (класс NetworkResponse.java):

@Keep
public class NetworkResponse {
   // fields of class...
}

где мне нужно добавить аннотацию @keep, я использую библиотеку Retrofit 2 для получения данных с сервера

Lokesh GP Loki 26.10.2018 09:19

Вы используете gson?

p.alexey 26.10.2018 09:20

Да, я использую gson

Lokesh GP Loki 26.10.2018 09:21

Вам нужно добавить эту аннотацию в объявление класса для каждой вашей модели. Пример Response.java: @Keep public class Response {...

p.alexey 26.10.2018 09:22

Если использовать геттер и сеттер ??

Lokesh GP Loki 26.10.2018 09:28

Не важно.

p.alexey 26.10.2018 09:30

аннотация @keep не требуется. @SerializedName в порядке, потому что ваш синтаксический анализатор все равно поймет, что запутанный public int jdiejwdij отображается на ключ id

Zun 26.10.2018 10:45

@LokeshGPLoki Мой ответ вам помог?

p.alexey 28.10.2018 08:18

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.

Lokesh GP Loki 26.10.2018 09:23

Если для minifyEnabled установлено значение false, то проблема не в proguard.

Shivam 26.10.2018 09:27

Другие вопросы по теме