我正在尝试迁移到androidx。我在Android Studio中使用了迁移工具。当我这样做时,我会在运行我的应用程序时得到以下堆栈跟踪
E/AndroidRuntime:致命异常:主
进程:com.peerke.outdoorpuzzgame.debug,PID:10901
java.lang.RuntimeException:无法获取提供程序android.support.v4.content.FileProvider:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”/data/app/com.peerke.outdoorpuzzlegame.debug-IBtFsngoLqc-cQb_hOO5wQ==/base.apk]的NativeLibrary目录中未找到类“android.support.v4.content.FileProvider”=[/data/app/com.peerke.outdoorpuzzgame.debug-IBtFsngoLqc-cQb_hOO5wQ==/lib/x86,/system/lib]]
位于android.app.ActivityThread.installProvider(ActivityThread.java:6376)
位于android.app.ActivityThread.installContentProviders(ActivityThread.java:5932)
位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:5847)
在android.app.ActivityThread.access$1000(ActivityThread.java:198)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1637)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6649)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
原因:java.lang.ClassNotFoundException:在路径:DexPathList[[zip文件”/data/app/com.peerke.outdoorpuzzgame.debug-IBtFsngoLqc-cQb_hOO5wQ=/base.apk]上未找到类“android.support.v4.content.FileProvider”,nativeLibraryDirectories=[/data/app/com.peerke.outdoorpuzzgame.debug-IBtFsngoLqc-cQb_hOO5wQ=/lib/x86,/system/lib]]
位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:379)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:312)
位于android.app.AppComponentFactory.InstanceProvider(AppComponentFactory.java:121)
位于androidx.core.app.CoreComponentFactory.InstanceProvider(CoreComponentFactory.java:62)
位于android.app.ActivityThread.installProvider(ActivityThread.java:6360)
位于android.app.ActivityThread.installContentProviders(ActivityThread.java:5932)
位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:5847)
在android.app.ActivityThread.access$1000(ActivityThread.java:198)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1637)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6649)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
例外情况是正确的。我的应用程序中不存在android.support.v4.content.FileProvider。但我的应用程序中包含androidx.core.content.FileProvider。
最大的问题是它为什么要加载旧版本的FileProvider
感谢@commonware
更多说明:
要做什么,请在AndroidManifest.xml中的<;provider>;中找到android.support.v4.FileProvider
将其更改为androidx.core.content.FileProvider