В instanceState активности мы сохраняем Serializable (bundle.putSerializable). В отчете о сбое из Play Маркета мы увидели следующую трассировку стека:
Caused by: java.lang.ClassNotFoundException: o.ণ
at java.lang.Class.classForName(Class.java)
at java.lang.Class.forName(Class.java:308)
at android.os.Parcel$2.resolveClass(Parcel.java:2373)
at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657)
at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1782)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
at android.os.Parcel.readSerializable(Parcel.java:2381)
Наш код запутан DexGuard. Похоже, что Android способен сериализовать класс, но не может десериализовать класс.
Единственная причина, по которой мы сейчас можем думать, - это обновление приложения (через Play Store). Между версией класс изменяется (из-за Dexguard), делая невозможным десериализацию.
Итак, мой вопрос: удаляет ли Android весь экземпляр приложения при обновлении приложения или нет?