RuntimeException Unmarshalling код неизвестного типа

Мое приложение падает после того, как процесс убит и воссоздан — со следующим исключением.

06-15 15:21:15.064 3610-3610/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.app, PID: 3610
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.ui.module.main.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
        at android.os.Parcel.readValue(Parcel.java:2824)
        at android.os.Parcel.readSparseArrayInternal(Parcel.java:3195)
        at android.os.Parcel.readSparseArray(Parcel.java:2407)
        at android.os.Parcel.readValue(Parcel.java:2802)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3114)
        at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
        at android.os.BaseBundle.unparcel(BaseBundle.java:226)
        at android.os.Bundle.getSparseParcelableArray(Bundle.java:1009)
        at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2129)
        at android.app.Activity.onRestoreInstanceState(Activity.java:1102)
        at android.app.Activity.performRestoreInstanceState(Activity.java:1057)
        at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1260)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
06-15 15:21:15.065 3610-3610/com.example.app E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.ui.module.main.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
        at android.os.Parcel.readValue(Parcel.java:2824)
        at android.os.Parcel.readSparseArrayInternal(Parcel.java:3195)
        at android.os.Parcel.readSparseArray(Parcel.java:2407)
        at android.os.Parcel.readValue(Parcel.java:2802)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3114)
        at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
        at android.os.BaseBundle.unparcel(BaseBundle.java:226)
        at android.os.Bundle.getSparseParcelableArray(Bundle.java:1009)
        at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2129)
        at android.app.Activity.onRestoreInstanceState(Activity.java:1102)
        at android.app.Activity.performRestoreInstanceState(Activity.java:1057)
        at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1260)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Я наткнулся на этот, казалось бы, похожий вопрос с принятым ответом. Он указывает на то, что ProGuard запутывает реализацию Parcelable, как на причину, и устраняет проблему, добавляя правило ProGuard.

Я попытался добавить вышеупомянутое правило ProGuard к своим правилам ProGuard, но сбой все равно происходит. Я полностью отключил ProGuard, и приложение все равно вылетает.

Еще больше озадачивает тот факт, что я активно стараюсь избегать использования Parcelable. Он по-прежнему распространен в некоторых старых кодовых базах, но я стараюсь удалить его, когда могу (и реализовать новую структуру ViewModel). Единственное место, где я вижу, что Parcelable используется в onRestoreInstanceState для пользовательского класса Preference, который я создал; но сбой происходит после успешного вызова этих методов. Трассировка стека, похоже, ни на что не указывает, только на то, что MainActivity дает сбой, даже не на номер строки.

Обновить

Единственное использование Parcelable, на которое ссылаются в классе, который использует MainActivity, находится в пользовательском классе WallpaperPreference. Этот класс используется в Fragment, встроенном в MainActivity. Я удалил это Fragment из активности, и сбой все еще происходит.


person Bryan    schedule 15.06.2018    source источник
comment
не могли бы вы поделиться кодом, где используется Parcelable?   -  person Anatolii    schedule 15.06.2018
comment
@user1055395 user1055395 Я также включаю ProGuard для своей отладочной сборки. Сборка занимает на несколько секунд больше, но таким образом я избегаю многих проблем. Проблема возникает и в релизных сборках.   -  person Bryan    schedule 15.06.2018
comment
@user1055395 user1055395 У меня проблема все еще возникает. Что касается кода, в котором появляется Parcelable, я обновлю свой вопрос.   -  person Bryan    schedule 15.06.2018
comment
@ user1055395 12.0.1, еще не было возможности перейти на более новые версии.   -  person Bryan    schedule 17.06.2018