首页 > 解决方案 > 升级到 androidX 后 PlayStore 崩溃 ClassNotFoundException

问题描述

使用以下堆栈跟踪升级到 androidX 后,我在 Playstore 中崩溃

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3960)
  at android.app.ActivityThread.access$1400 (ActivityThread.java:268)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1993)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:237)
  at android.app.ActivityThread.main (ActivityThread.java:7811)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1068)

Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:196)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:379)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.AppComponentFactory.instantiateReceiver (AppComponentFactory.java:110)
  at androidx.core.app.CoreComponentFactory.instantiateReceiver (CoreComponentFactory.java:54)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3953)
  at android.app.ActivityThread.access$1400 (ActivityThread.java:268)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1993)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:237)
  at android.app.ActivityThread.main (ActivityThread.java:7811)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1068)

这些是我遇到崩溃的设备

Galaxy A30 (a30)
moto g(6) plus (evert_n)
OnePlus 7 (OnePlus7)
Galaxy Note9 (crownlte)
OnePlus 7T Pro 5G (OnePlus7TProNR)

gradle-wrapper.properties 中的分发 URL 是 5.6.4

我通过在 gradle.properties 添加以下内容进行了升级

android.useAndroidX=true
android.enableJetifier=true

我已经尝试在 proguard 我直接使用的所有 androidX 类中包含以下内容

-keep class androidx.core.** { *; }
-keep interface androidx.core.** { *; }

-keep class androidx.annotation.** { *; }
-keep interface androidx.annotation.** { *; }

-keep class androidx.fragment.** { *; }
-keep interface androidx.fragment.** { *; }

-keep class androidx.appcompat.** { *; }
-keep interface androidx.appcompat.** { *; }

-keep class androidx.core.** { *; }
-keep interface androidx.core.** { *; }

-keep class androidx.recyclerview.** { *; }
-keep interface androidx.recyclerview.** { *; }

-keep class androidx.drawerlayout.** { *; }
-keep interface androidx.drawerlayout.** { *; }

-keep class androidx.loader.** { *; }
-keep interface androidx.loader.** { *; }

编辑:我将此添加到我的 proguard 文件中

-keep class * { public private *; }

但我仍然看到错误

标签: androidgradleproguardclassnotfoundexceptionandroidx

解决方案


推荐阅读