Исключение: во время выполнения произошел демаршаллинг кода неизвестного типа - PullRequest
2 голосов
/ 17 февраля 2020

Я работаю над приложением Android, и мы работаем как команда. Я сталкиваюсь с серьезной проблемой. И именно тогда, когда я пытаюсь получить данные из намерения, это дает мне следующее исключение

Посылка android .os. Parcel@355932a: Unmarshalling неизвестный код типа 4784211 по смещению 712

Я знаю, что на SO есть много вспомогательных материалов, связанных с этой проблемой, но мой случай отличается и тихий ум ошеломляет .....

Вот быстрый код, чтобы увидеть, как я получаю свой объект

       try {
                if (data.hasExtra("KEY_MY_MODEL")) { 

                    MyCustomModel newSelectedModel = data.getParcelableExtra("KEY_MY_MODEL");


                    //DO SOME THING WITH OBJECT
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

Case1: Я получаю исключение на первая строка if (data.hasExtra ("KEY_MY_MODEL")) {

, и это довольно забавно, потому что, когда я проверяю объект намерения (данные) во время отладки и если я смотрю на объект намерения используя отладку, я вижу все свои объекты.

Ключи получения объекта одинаковы, если в любом случае ключ неправильный, я думаю, что код внутри условия if не должен запускаться. как он вернет ложь.

Но вместо того, чтобы возвращать false, он дает вышеупомянутое исключение.

Case2: Как я уже говорил, мы работаем в команде, тот же набор кода отлично работает в другой системе, но когда я запускаю приложение из своей системы и устанавливаю приложение на устройство, это исключение, которое я упомянул выше.

Это очень расстраивает. Я думаю, что с proguard что-то не так, как я читаю на SO, но это все равно не помогает Любая идея, почему это происходит? Это выглядит как большая ошибка.

Примечание: я использую AS 3.5, и в другой системе используется AS 3.5, даже если у нас такой же набор sdk, конфигурации и другие вещи тихие идентичны с обеих сторон ...

1 Ответ

1 голос
/ 17 февраля 2020

Кажется, это ProGuard проблема

Просто добавьте эту строку в proguard.rules.pro/txt

-keepclassmembers class * implements android.os.Parcelable {
    static ** CREATOR;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...