android 解决“应用组件的命名与已安装应用有冲突”问题

1.场景还原:

接到一个需求是:客户要在手机上同时安装正式版和测试版的app;看似很简单,改个包名重新打包就可以。但是在AS上运行时出现Installation failed with message INSTALL_FAILED_CONFLICTING_PROVIDER: Package couldn't be installed in /data/app...的问题,翻译后大概是说与"xxx"存在内容提供者冲突,无法同时安装,建议卸载冲突应用后重试的问题,截图如下:

当时就很奇怪,包名都不一样了,为啥还会安装不了,接着就一顿百度搜索。

2.问题分析:

两个APK中的ContentProvider的authorities值如果一样,Android就默认反馈应用组件命名与已安装应用有冲突,导致同一台设备不能再安装新的应用。因为ContentProvider中authorities是为内容提供者指定的唯一标识,这样别的应用才可以唯一获取此Provider,同时App中自己的ContentProvider中authorities也不能和Android系统的authorities一致。

3.问题解决:

如上图项目中( android:authorities="com.yycd.fileprovider")这种声明方式必定无法同时安装,原博主建议我们使用 “APP英文名+包名+类名”来避免。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值