【发布时间】:2019-04-22 15:26:57
【问题描述】:
我们的崩溃报告系统正在记录这种类型的崩溃:
Caused by java.lang.RuntimeException: Parcel android.os.Parcel@8bf0d1f: Unmarshalling unknown type code 6881391 at offset 356
at android.os.Parcel.readValue(Parcel.java:2779)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:3148)
at android.os.Parcel.readSparseArray(Parcel.java:2362)
at android.os.Parcel.readValue(Parcel.java:2757)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3067)
at android.os.BaseBundle.unparcel(BaseBundle.java:257)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:958)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1329)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3244)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:3194)
at android.support.v4.app.Fragment.restoreChildFragmentState(Fragment.java:1444)
at android.support.v4.app.Fragment.onCreate(Fragment.java:1415)
at com.payments.base.BaseFragment.onCreate(BaseFragment.java:68)
at com.payments.app.fragments.TopLevelFragment.onCreate(TopLevelFragment.java:422)
at android.support.v4.app.Fragment.performCreate(Fragment.java:2331)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1386)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1827)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3244)
at android.support.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:3194)
at android.support.v4.app.Fragment.restoreChildFragmentState(Fragment.java:1444)
at android.support.v4.app.Fragment.onCreate(Fragment.java:1415)
我所知道的:当应用程序从后台恢复并调用 onCreate 时会发生这种情况。 我们的应用程序是一个单活动应用程序,所有 UI 都由片段管理。 这种崩溃很少发生,并且很难在我们的开发环境中重现。
另外 - 我不认为原因是我们创建了一些可打包的对象,而是 Android 组件重新加载,但不确定。
我想知道的:如何分析这些堆栈跟踪以确定原因?如何利用给定的小数据?
请注意,堆栈跟踪几乎不指向我们应用程序中的任何特定行,以及它在哪里 - 仅指向我们的活动和片段基类的 onCreate 方法
【问题讨论】:
-
我开始为这个问题悬赏,因为我的应用程序有完全相同的错误,而谷歌开发者控制台没有提供关于如何修复(甚至跟踪)它的提示。这仅在生产中发生吗?我怀疑 ProGuard 配置错误...
-
因此,在配置更改/应用程序恢复/其他任何情况后,碎片未打包时会发生这种情况。如果在您的应用使用新版本的支持库更新后发生这种情况怎么办?持久片段状态的模式可能在支持库版本之间发生了变化。我没有任何支持。
-
为了帮助查明发生这种情况的位置,您可能还需要使用生命周期回调记录创建/启动/恢复/暂停片段:developer.android.com/reference/android/support/v4/app/…
-
你有什么:com.payments.base.BaseFragment.onCreate(BaseFragment.java:68) com.payments.app.fragments.TopLevelFragment.onCreate(TopLevelFragment.java:422)跨度>
标签: android parcelable