问题
************* Crash Log Head ****************
Device Manufacturer: alps
Device Model : S21
Android Version : 8.0.0
Android SDK : 26
App VersionName : 1.0.11
App VersionCode : 9
************* Crash Log Head ****************
java.lang.RuntimeException: Error receiving broadcast Intent { act=com.zp.android.scmp.Action_Task_Finished flg=0x10 (has extras) } in com.zp.android.scmp.module.seccheck.view.SecCheckFragment$4@1000f40
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_51697(LoadedApk.java:1334)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0(Unknown Source:4)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run(Unknown Source:0)
at android.os.Handler.handleCallback(Handler.java:869)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:206)
at android.app.ActivityThread.main(ActivityThread.java:6760)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845)
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@83c61b3: Unmarshalling unknown type code 6226009 at offset 2760
at android.os.Parcel.readValue(Parcel.java:2763)
at com.zp.android.scmp.data.model.ExecUser.<init>(ExecUser.java:57)
at com.zp.android.scmp.data.model.ExecUser$1.createFromParcel(ExecUser.java:63)
at com.zp.android.scmp.data.model.ExecUser$1.createFromParcel(ExecUser.java:61)
at android.os.Parcel.createTypedArrayList(Parcel.java:2401)
at com.zp.android.scmp.data.model.Task.<init>(Task.java:114)
at com.zp.android.scmp.data.model.Task$1.createFromParcel(Task.java:35)
at com.zp.android.scmp.data.model.Task$1.createFromParcel(Task.java:33)
at android.os.Parcel.readParcelable(Parcel.java:2790)
at android.os.Parcel.readValue(Parcel.java:2684)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3051)
at android.os.BaseBundle.unparcel(BaseBundle.java:257)
at android.os.Bundle.getParcelable(Bundle.java:888)
at android.content.Intent.getParcelableExtra(Intent.java:7075)
at com.zp.android.scmp.module.seccheck.view.SecCheckFragment$4.onReceive(SecCheckFragment.java:140)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_51697(LoadedApk.java:1323)
... 9 more
java.lang.RuntimeException: Parcel android.os.Parcel@83c61b3: Unmarshalling unknown type code 6226009 at offset 2760
at android.os.Parcel.readValue(Parcel.java:2763)
at com.zp.android.scmp.data.model.ExecUser.<init>(ExecUser.java:57)
at com.zp.android.scmp.data.model.ExecUser$1.createFromParcel(ExecUser.java:63)
at com.zp.android.scmp.data.model.ExecUser$1.createFromParcel(ExecUser.java:61)
at android.os.Parcel.createTypedArrayList(Parcel.java:2401)
at com.zp.android.scmp.data.model.Task.<init>(Task.java:114)
at com.zp.android.scmp.data.model.Task$1.createFromParcel(Task.java:35)
at com.zp.android.scmp.data.model.Task$1.createFromParcel(Task.java:33)
at android.os.Parcel.readParcelable(Parcel.java:2790)
at android.os.Parcel.readValue(Parcel.java:2684)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3051)
at android.os.BaseBundle.unparcel(BaseBundle.java:257)
at android.os.Bundle.getParcelable(Bundle.java:888)
at android.content.Intent.getParcelableExtra(Intent.java:7075)
at com.zp.android.scmp.module.seccheck.view.SecCheckFragment$4.onReceive(SecCheckFragment.java:140)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_51697(LoadedApk.java:1323)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0(Unknown Source:4)
at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run(Unknown Source:0)
at android.os.Handler.handleCallback(Handler.java:869)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:206)
at android.app.ActivityThread.main(ActivityThread.java:6760)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845)
注:在android 7.0和8.0上均能复现,android9.0未能复现(怀疑google修复过?)。
原因
在合并分支的时候将类中变量的read和write顺序搞乱了。Parcelable序列化时必须保证读写顺序一致,读写类型一致。
参考
How to fix Unmarshalling unknown type code XXX at offset YYY in Android?