【问题标题】:Exception during screen rotation: Parcel: Class not found when unmarshalling: androidx.fragment.app.FragmentManagerState屏幕旋转期间的异常:包裹:解组时找不到类:androidx.fragment.app.FragmentManagerState
【发布时间】:2019-10-10 21:06:58
【问题描述】:

屏幕旋转时出现此异常,调用过程中:onCreate()及其超级方法:super.onCreate(savedInstanceState);

似乎与此线程相关或相同:Why is there ClassNotFoundException when i change screen orientation? 但不幸的是,建议的解决方案不起作用。删除 AdView 不会改变任何内容。

这是完整的堆栈:

E/Parcel: Class not found when unmarshalling: androidx.fragment.app.FragmentManagerState
    java.lang.ClassNotFoundException: androidx.fragment.app.FragmentManagerState
        at java.lang.Class.classForName(Native Method)
        at java.lang.Class.forName(Class.java:453)
        at android.os.Parcel.readParcelableCreator(Parcel.java:2827)
        at android.os.Parcel.readParcelable(Parcel.java:2781)
        at android.os.Parcel.readValue(Parcel.java:2684)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3053)
        at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
        at android.os.BaseBundle.unparcel(BaseBundle.java:232)
        at android.os.Bundle.getBundle(Bundle.java:917)
        at gh.onActivityCreated(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):32)
        at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.onActivityCreated(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):88)
        at cp.a(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):169)
        at j.onTransact(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):4)
        at android.os.Binder.transact(Binder.java:675)
        at com.google.android.gms.internal.measurement.zzq.zza(Unknown Source:20)
        at com.google.android.gms.internal.measurement.zzdp.onActivityCreated(Unknown Source:144)
        at com.google.android.gms.internal.measurement.zzex.zzgd(Unknown Source:4)
        at com.google.android.gms.internal.measurement.zzea$zzb.run(Unknown Source:11)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.ClassNotFoundException: androidx.fragment.app.FragmentManagerState
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:1346)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:1406)
        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:2827) 
        at android.os.Parcel.readParcelable(Parcel.java:2781) 
        at android.os.Parcel.readValue(Parcel.java:2684) 
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3053) 
        at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288) 
        at android.os.BaseBundle.unparcel(BaseBundle.java:232) 
        at android.os.Bundle.getBundle(Bundle.java:917) 
        at gh.onActivityCreated(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):32) 
        at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.onActivityCreated(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):88) 
        at cp.a(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):169) 
        at j.onTransact(:com.google.android.gms.dynamite_measurementdynamite@17122081@17.1.22 (100400-245988633):4) 
        at android.os.Binder.transact(Binder.java:675) 
        at com.google.android.gms.internal.measurement.zzq.zza(Unknown Source:20) 
        at com.google.android.gms.internal.measurement.zzdp.onActivityCreated(Unknown Source:144) 
        at com.google.android.gms.internal.measurement.zzex.zzgd(Unknown Source:4) 
        at com.google.android.gms.internal.measurement.zzea$zzb.run(Unknown Source:11) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

还有一个针对 W/FA-ADS 的额外警告

W/FA-Ads: Error with data collection. Data lost.
    android.os.BadParcelableException: ClassNotFoundException when unmarshalling: androidx.fragment.app.FragmentManagerState
        at android.os.Parcel.readParcelableCreator(Parcel.java:2917)
        at android.os.Parcel.readParcelable(Parcel.java:2843)
        at android.os.Parcel.readValue(Parcel.java:2746)
        at android.os.Parcel.readArrayMapInternal(Parcel.java:3115)
        at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
        at android.os.BaseBundle.unparcel(BaseBundle.java:226)
        at android.os.Bundle.getBundle(Bundle.java:916)
        at kh.a(:com.google.android.gms.dynamite_measurementdynamite@19275051@19.2.75 (040408-269183835):35)
        at jz.onActivityCreated(:com.google.android.gms.dynamite_measurementdynamite@19275051@19.2.75 (040408-269183835):22)
        at com.google.android.gms.measurement.internal.AppMeasurementDynamiteService.onActivityCreated(:com.google.android.gms.dynamite_measurementdynamite@19275051@19.2.75 (040408-269183835):129)
        at cq.a(:com.google.android.gms.dynamite_measurementdynamite@19275051@19.2.75 (040408-269183835):160)
        at j.onTransact(:com.google.android.gms.dynamite_measurementdynamite@19275051@19.2.75 (040408-269183835):4)
        at android.os.Binder.transact(Binder.java:627)
        at com.google.android.gms.internal.measurement.zzb.zza(Unknown Source:20)
        at com.google.android.gms.internal.measurement.zzm.onActivityCreated(Unknown Source:144)
        at com.google.android.gms.internal.measurement.zzbd.zzf(Unknown Source:4)
        at com.google.android.gms.internal.measurement.zzz$zzb.run(Unknown Source:11)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)

【问题讨论】:

  • 可能是Oppo 设备上的错误。以下是相关问题:issuetracker.google.com/issues/135627416
  • 我有一台三星 Galaxy S10。你觉得ROM也有bug吗?
  • @Cyrille 您是否已经知道异常的来源和/或如何防止它?我在配置更改和重新创建活动时遇到完全相同的异常。它似乎没有破坏任何东西,但我宁愿阻止它发生。
  • 我还是不知道,我会在圣诞节期间尝试使用其他设备。

标签: java android android-fragments admob


【解决方案1】:

您的源代码使用 proguard 进行了混淆处理。

你确定“androidx.fragment.app.FragmentManagerState”类被排除在proguard之外吗?

如果没有,请添加并尝试一下

-keep class * implements android.os.Parcelable { 
   public static final android.os.Parcelable$Creator *; 
}

【讨论】:

  • 遗憾的是它不起作用。它也发生在没有 proguard 的调试模式下。
【解决方案2】:

尝试添加 implementation 'androidx.fragment:fragment:1.2.0' 进入build.gradle。它帮助了我。

通过提供androidx.fragment.app.FragmentManagerState 的实现,这个问题就消失了。

请注意,您要使用的版本(1.2.0)可能不同(新/旧)

【讨论】:

  • 我只是尝试使用 1.2.1 版本,但我有完全相同的错误
  • 我刚刚发现在这个之前还有一个异常。这个是在要恢复片段状态时生成的。我正在使用带有打开 logcat 的 android studio,并启用了从我的应用程序中过滤日志(仅显示选定的应用程序)。当我禁用该过滤器时,我发现了另一个异常。
  • 哪个例外?我什么也没看到。
【解决方案3】:

我遇到了这个异常,我花了一段时间才弄清楚发生了什么。我相信我的情况与@Amirr0r 在他的评论中提到的完全一样,所以在这里报告它可能是值得的。 关键是使用“No Filters”在 Logcat 窗口中显示所有内容。在这个奇怪的异常之前应该有一个崩溃异常或 ANR。就我而言,这是由前台服务引起的 ANR。一旦处理了 ANR,这个问题就消失了。

【讨论】:

    猜你喜欢
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多