我已经到处搜索了这个问题,但仍然没有解决方案。
gradle 有 minSdkVersion 21 和 targetSdkVersion 29
我只在 API 29 中遇到错误,然后应用程序无法加载并显示空白屏幕。当我看到 logcat 它给出了这样的错误:
E/LoadedApk: Unable to instantiate appComponentFactory
java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/com.packagename.appname-BxS7Zs-h0IWwJAVhbjx7aQ==/lib/x86, /data/app/com.packagename.appname-BxS7Zs-h0IWwJAVhbjx7aQ==/base.apk!/lib/x86, /system/lib, /system/product/lib]]
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.LoadedApk.createAppFactory(LoadedApk.java:256)
at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:370)
at android.app.ActivityThread.handleDispatchPackageBroadcast(ActivityThread.java:5951)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1941)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at com.android.server.SystemServer.run(SystemServer.java:541)
at com.android.server.SystemServer.main(SystemServer.java:349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:908)
Run Code Online (Sandbox Code Playgroud)
我认为它似乎来自 multidex,然后我尝试将以下代码添加到 gradle app
multiDexKeepFile 文件('multidex-config.txt')
multiDexKeepProguard 文件('multidex-config.pro')
我的 multidex-config.txt
com/packagename/appname/androidx.class
Run Code Online (Sandbox Code Playgroud)
我的 multidex-config.pro
-keep class androidx.core.app.CoreComponentFactory { *; }
Run Code Online (Sandbox Code Playgroud)
我的 App …