Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException:“问题

最新推荐文章于 2021-05-08 15:37:39 发布
最新推荐文章于 2021-05-08 15:37:39 发布

最近公司一个Android项目代码很难继续在原来基础【外包代码】上修修补补了,于是决定全面重构一下,中间出了一个小插曲就是在用androidx替换原来support时报如下错:

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.xxxx-2/base.apk”],nativeLibraryDirectories=[/data/app/comxxxx-2/lib/arm64, /vendor/lib64, /system/lib64]]

FATAL EXCEPTION: main
    Process: xxx.xxxx.xxxx, PID: 12835
    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.xxxx-2/base.apk"],nativeLibraryDirectories=[/data/app/com.xxxx-2/lib/arm64, /vendor/lib64, /system/lib64]]
        at android.app.ActivityThread.installProvider(ActivityThread.java:5149)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4727)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4667)
        at android.app.ActivityThread.access$1600(ActivityThread.java:175)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5418)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1037)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.FileProvider" on path: DexPathList[[zip file "/data/app/com.xxxx-2/base.apk"],nativeLibraryDirectories=[/data/app/com.xxxx-2/lib/arm64, /vendor/lib64, /system/lib64]]

其他的项目中早就替换为androidx了都记不清之前替换的时候都修改了啥,反正上一次是很顺利的很快就搞定了于跟老板说androidx替换support很easy的,结果出了这个小问题下午一直卡的第二天才逐个排查解决问题,所以这里记录一下。

问题根源是由于适配Android7.0文件权限中在manifest中provider中忘记修改的路径名导致的:
Android support包时provider的配置【主要是name】

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="apk-package-name.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

使用Android androidx基础组件包时provider的正确配置

     <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="apk-package-name.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

最后补充是还是自己开始就没有去仔细看错误分析一下,习惯性直接复制错误然后百度,结果浪费时间精力。总结是遇到问题应该先冷静下分析然后解决,一味靠baidu和google不仅不能提高还浪费时间精力,还有网上的解答只有极少的内容是有价值的,其他都是抄袭的垃圾。

Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException:“问题 最近公司一个Android项目代码很难继续在原来基础【外包代码】上修修补补了,于是决定全面重构一下,中间出了一个小插曲就是在用androidx替换原来support时报如下错:FATAL EXCEPTION: main Process: com.poobo.peakecloud, PID: 12835 java.lang.RuntimeException: Unable to g...
照着第二版第一行代码敲的调用摄像头部分,因为编译器提示没有android.support.v4.content.fileprovider。就自己导了一个名字带providerandroid.provider.DocumentsProvider 报错信息如下: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.cameraalbumtest, PID: 13140 java.lang.RuntimeExcep
AndroidManifest.xml中加入下面这段话后, <provider android:name="android.support.v4.content.FileProvider" android:authorities="com.boxin.forklift.fileprovider" android:exp...
在新项目中已开始迁移到Androidx遇到Unable to get provider androidx.lifecycle.ProcessLifecycleOwnerInitializer错误,APP在安卓4.4上面启动奔溃,记录解决办法。参考原文 在安卓4.4中,这是一个dex问题。解决办法是 1、在app.gradle中,defaultconfig内启用multidex defaultCo...
这个异常通常表示在运行时找不到指定的类。在你的情况下,这个异常是由于找不到 com.alibaba.fastjson2.support.AwtRederModule 类而引起的。 要解决这个问题,你可以尝试以下几个步骤: 1. 确保你的项目中包含了 fastjson 依赖。你可以在项目的 pom.xml(如果是 Maven 项目)或者 build.gradle(如果是 Gradle 项目)文件中添加 fastjson 的依赖项。 2. 检查 fastjson 的版本是否正确。确保你使用的 fastjson 版本与 AwtRederModule 类兼容。有时候,版本冲突可能会导致类找不到的异常。 3. 如果你已经添加了正确的依赖并且版本也正确,但仍然出现这个异常,那么可能是由于编译器没有正确地将相关的类编译到输出目录中。你可以尝试清理并重新构建你的项目,以确保所有的类都被正确地编译和打包。 如果你仍然无法解决这个问题,建议提供更多的上下文信息,例如你正在使用的开发环境、项目结构、相关代码片段等,以便更好地帮助你解决这个问题
Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException:“问题 根本就不行 Unable to get provider android.support.v4.content.FileProvider: 这两种都是这样 Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException:“问题 m0_56735256: 我就是加了这一段还是报这个错 Java中ReentrantLock的使用 这是菜鸟吗,我是菜虫 Java中ReentrantLock的使用 weixin_45822867: 注销了,效果还是一样,还是没搞明白这两行的作用,请指教