2011-12-27 2 views
2

Я создал приложение для Android, которое отлично работает в эмуляторе и при отладке на моем самом устройстве.Android-приложение с GSON работает в режиме отладки, но не при запуске подписанного apk

Однако при запуске подписанного 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(); 
    } 
} 

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

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

+0

Никто. Если вы не публикуете больше информации (вывод logcat, возможные исключения и т. Д.) –

+0

Вывод logcat не дает никакой важной и полезной информации, и я не получаю никаких исключений. Я полностью осознаю, что этот вопрос расплывчатый, и если бы было исключение, было бы намного легче разобраться. Меня беспокоит то, что, по-видимому, он что-то делает с подписанием vs debug, и я подумал, что, возможно, другие столкнулись с подобными проблемами. – Eivind

ответ

3

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

+1

ProGuard был виновником. Спасибо. :-) – Eivind

+0

Что вы решили сделать? У меня возникает аналогичная проблема ... см. Мой вопрос: http: //stackoverflow.com/questions/30290208/gson-not-creating-correctly-using-my-jsonentity-only-in-published-app-using-an – JonasOliveira

+0

Инструменты Proguard и отражения не очень хорошо смешиваются. Общим решением является исключение классов домена из обработки proguard. –

 Смежные вопросы

  • Нет связанных вопросов^_^