I have a few crash report logs from android market similar to this:
Exception class: java.lang.ClassNotFoundException
Source method: PathClassLoader.findCla
LinkedHashMap
doesn't implement Serializable
so this may be causing the error. Try either implementing a small test to serialize this class or try removing the LinkedHashMap
and see if the error persists.
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();
}
You should look into implementing Parcelable
.
These two links should get you started:
http://developer.android.com/reference/android/os/Parcel.html
http://developer.android.com/reference/android/os/Parcelable.html