Getting ClasscastException at FlutterSplashView.java for one of my published APP

Viewed 831

My APP is published in Google Play Store and it crashes in some devices. Is it related to the Splash screen? I don't implement any Splash screen so, not sure what cause this error.

java.lang.ClassCastException: at io.flutter.embedding.android.FlutterSplashView.onRestoreInstanceState (FlutterSplashView.java) at android.view.View.dispatchRestoreInstanceState (View.java:20262) at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:4039) at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:4045) at android.view.View.restoreHierarchyState (View.java:20240) at com.android.internal.policy.PhoneWindow.restoreHierarchyState (PhoneWindow.java:2184) at android.app.Activity.onRestoreInstanceState (Activity.java:1195) at android.app.Activity.performRestoreInstanceState (Activity.java:1150) at android.app.Instrumentation.callActivityOnRestoreInstanceState (Instrumentation.java:1321) at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3161) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:180) at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:165) at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:142) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1955) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loop (Looper.java:214) at android.app.ActivityThread.main (ActivityThread.java:7091) at java.lang.reflect.Method.invoke (Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

1 Answers

According to this issue on Flutter's repo, if you are using Flutter 1.12.13+hotfix.9 or earlier, the recommended approach is to setup a Proguard rule that will not obfuscate the FlutterSplashView.SavedState class.

In <your-app-directory>/android/app/proguard-rules.pro, add this line:

-keep public class io.flutter.embedding.android.FlutterSplashView.$SavedState { *; }

Check also this article about Flutter and Android Obfuscation.

Related