Andorid 多FileProvider问题

背景:

    开发SDK过程中,为了兼容Android 7.0以上文件访问问题,引入了FileProvider,但业务方在使用SDK的过程中也引入了FileProvider,导致多个FileProvider共存时,打出的apk包Manifest中少了一个FileProvider或res/xml文件夹缺少xml文件的问题。

    关于FileProvider的使用说明见:https://blog.csdn.net/lmj623565791/article/details/72859156

场景:

    一、resource相同,但authorities不同  

           

        如上图所示,虽然宿主和SDK的aar文件中声明了两个FileProvider,但由于路径相同,编译时会出现属性被覆盖问题,导致程序在获取文件权限时会出现异常,导致崩溃。

        解决方案是将FileProvider中的resource和authorities都设置为不同 ,于是出现了第二个场景:

   二、resource相同,但authorities不同,但编译不通过,提示Manifest Merge失败。

         

        出现这个问题的原因是注册FileProvider时使用的都是support包中系统提供的FileProvider类,但由于resourceauthorities

都不相同,声明了组件一样但属性不同的多个FileProvider,在编译时系统无法判断用哪一个,导致merge失败。

         解决方案为:将其中任何一个FileProvider改为自定认的FileProvider即可:

        1、创建自定义的FileProvider类,继承自FileProvider:

              

        2、Manifest中声明时,name设置为自定义FileProvider的全路径:

              

       完美解决~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值