android - 升级到 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 *; }
但我仍然看到错误
解决方案
推荐阅读
- tmux - 使用 tmux 时如何禁用滚动功能?
- vba - WORD - 通过引号中的文本查找和替换文本
- java - 如果被调度作业调用 Dropwizar ,则看不到标有 @Timed 注释的方法
- javascript - 如何在整个文档中搜索特定单词及其前一个单词(在 java 脚本中)
- npm - 如何在 npmjs 上取消发布节点模块?
- powershell - 从远程系统运行 Get-PSDrive 时的 AUDIT_FAILURE
- xslt-2.0 - XML 到 CSV(使用输入日期生成新日期)
- javascript - 如何取消嘲笑要求?
- selenium - 在测试套件中运行特定测试 - Selenium Side Runner (IDE)
- c# - 集合和迭代器的 C# 性能