avito-tech / krop

Small widget for image cropping in Instagram-like style
MIT License
126 stars 18 forks source link

Exception when restoring KropView from savedInstanceState #14

Closed alexbakker closed 5 years ago

alexbakker commented 5 years ago

The following exception is thrown when restoring KropView from savedInstanceState, causing the app to crash.

E/Parcel: Class not found when unmarshalling: com.avito.android.krop.ZoomableImageView$SavedState
    java.lang.ClassNotFoundException: com.avito.android.krop.ZoomableImageView$SavedState
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:453)
        at android.os.Parcel.readParcelableCreator(Parcel.java:2897)
        at android.os.Parcel.readParcelable(Parcel.java:2851)
        at com.avito.android.krop.KropView$SavedState.<init>(KropView.kt:263)
        at com.avito.android.krop.KropView$SavedState$CREATOR.createFromParcel(KropView.kt:268)
        at com.avito.android.krop.KropView$SavedState$CREATOR.createFromParcel(KropView.kt:266)
        at android.os.Parcel.readParcelable(Parcel.java:2860)
        at android.os.Parcel.readValue(Parcel.java:2754)
        at android.os.Parcel.readSparseArrayInternal(Parcel.java:3204)
        at android.os.Parcel.readSparseArray(Parcel.java:2416)
        at android.os.Parcel.readValue(Parcel.java:2811)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3123)
        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)
     Caused by: java.lang.ClassNotFoundException: com.avito.android.krop.ZoomableImageView$SavedState
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:1355)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:1415)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at java.lang.Class.classForName(Native Method) 
        at java.lang.Class.forName(Class.java:453) 
        at android.os.Parcel.readParcelableCreator(Parcel.java:2897) 
        at android.os.Parcel.readParcelable(Parcel.java:2851) 
        at com.avito.android.krop.KropView$SavedState.<init>(KropView.kt:263) 
        at com.avito.android.krop.KropView$SavedState$CREATOR.createFromParcel(KropView.kt:268) 
        at com.avito.android.krop.KropView$SavedState$CREATOR.createFromParcel(KropView.kt:266) 
        at android.os.Parcel.readParcelable(Parcel.java:2860) 
        at android.os.Parcel.readValue(Parcel.java:2754) 
        at android.os.Parcel.readSparseArrayInternal(Parcel.java:3204) 
        at android.os.Parcel.readSparseArray(Parcel.java:2416) 
        at android.os.Parcel.readValue(Parcel.java:2811) 
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3123) 
        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) 
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
solkin commented 5 years ago

@alexbakker Thanks for the report, I'll check it soon.

solkin commented 5 years ago

@alexbakker Just checked state saving and found no bugs. Seems, you doing something wrong - this maybe incorrect state saving in Activity or obfuscation config issue in your project. Check for the Krop demo-app to reach integration example.

alexbakker commented 5 years ago

Apologies for the late response. I must have missed a notification.

I run into the same crash with demo app. Are you sure you triggered a restore from savedInstanceState during your test? Steps to reproduce:

  1. Start the app
  2. Close the app with the home button
  3. Terminate the application in Android Studio image
  4. Reopen the app through the recent apps list
  5. Watch it crash
solkin commented 5 years ago

Updated version 0.44 is now available 🎉