Ответ 1
почему он хочет загрузить старую версию FileProvider?
На основе трассировки стека, возможно, вы все еще используете старое имя пакета в элементе <provider>
в манифесте.
Я пытаюсь перейти к миграции на androidx. Я использовал инструмент миграции в Android Studio. Когда я это делаю, я получаю следующий стек, когда запускаю приложение.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.peerke.outdoorpuzzlegame.debug, PID: 10901
java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.peerke.outdoorpuzzlegame.debug-IBtFsngoLqc-cQb_hOO5wQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.peerke.outdoorpuzzlegame.debug-IBtFsngoLqc-cQb_hOO5wQ==/lib/x86, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:6376)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5932)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5847)
at android.app.ActivityThread.access$1000(ActivityThread.java:198)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1637)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.peerke.outdoorpuzzlegame.debug-IBtFsngoLqc-cQb_hOO5wQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.peerke.outdoorpuzzlegame.debug-IBtFsngoLqc-cQb_hOO5wQ==/lib/x86, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateProvider(AppComponentFactory.java:121)
at androidx.core.app.CoreComponentFactory.instantiateProvider(CoreComponentFactory.java:62)
at android.app.ActivityThread.installProvider(ActivityThread.java:6360)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5932)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5847)
at android.app.ActivityThread.access$1000(ActivityThread.java:198)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1637)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6649)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
Исключение является правильным. android.support.v4.content.FileProvider не существует в моем приложении. Но androidx.core.content.FileProvider включен в мое приложение. Большой вопрос, почему он хочет загрузить старую версию FileProvider?
почему он хочет загрузить старую версию FileProvider?
На основе трассировки стека, возможно, вы все еще используете старое имя пакета в элементе <provider>
в манифесте.
Благодаря @CommonsWare
Больше объяснений:
Что делать, найдите файл android.support.v4.FileProvider
в своем <provider>
в AndroidManifest.xml
.
Измените его на androidx.core.content.FileProvider
В файле manifiest.xml просто измените этот
<provider
android:name="android.support.v4.content.FileProvider"
.....
</provider>
Для этого
<provider
android:name="androidx.core.content.FileProvider"
......
</provider>
Или просто
У меня та же проблема, и в моем manifiest.xml нет никакого решения? Пожалуйста помоги
Нажмите AndroidManifest.xml, посмотрите внизу страницы с файлами, которые вы увидите "Текст" и "Объединенные манифесты", затем нажмите "Объединенный манифест" → найдите "android.support.v4.content.FileProvider" и измените его на "androidx.core.content.FileProvider"
Вот и все, точное решение.