Android-приложение с GSON работает в режиме отладки, но не при запуске подписанного apk - PullRequest
3 голосов
/ 27 декабря 2011

Я сделал приложение для Android, которое прекрасно работает в эмуляторе и при отладке на моем реальном устройстве.

Однако при запуске подписанного apk на устройстве десериализация GSON не работает.

Проблема возникает в этом коде:

public static void parseLanguage(String response) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.setFieldNamingStrategy(new MyFieldNamingStrategy());
    Gson gson = gsonBuilder.create();
    _Helper.s = gson.fromJson(response, _Strings.class);
}

Я также использую этот класс:

class MyFieldNamingStrategy implements FieldNamingStrategy {
//Translates the Java field name into its JSON element name representation.
    @Override
    public String translateName(Field field) {
        return field.getName();
    }
}

Я проверил, что строка с именем «response» является допустимой строкой JSON, но фактическое заполнение _Strings.class не работает, и все строки, содержащиеся в _Strings.class, остаются пустыми.

Кто-нибудь знает, почему это происходит? Это происходит только при запуске подписанного apk, и вывод Logcat вообще не показывает никаких исключений или трассировок стека.

1 Ответ

4 голосов
/ 27 декабря 2011

Просто добавьте ваш код к выводу отладки, где это возможно. Это даст вам больше понимания. Я сомневаюсь, что проблема заключается в подписании. Скорее всего, это ваш проект / конфигурация сборки. Одной из возможных причин может быть запутывание с помощью proguard (которое находится в наборе инструментов) - это обернется вашей стратегией именования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...