Android: ClassNotFoundException when passing serializable object to Activity

Finally reached a conclusion on this issue: it was being caused by Proguard, or more specifically, because I didn’t have a propper Proguard configuration.

It turns out Proguard was changing my Serializable‘s classes names, which makes Class.forName(className) fail.

I had to reconfigure my proguard.cfg file adding the following lines:

-keep class * implements java.io.Serializable

-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    !private <fields>;
    !private <methods>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

Leave a Comment