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

1.场景还原:

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

android 解决“应用组件的命名与已安装应用有冲突”问题_第1张图片

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

2.问题分析:

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

3.问题解决:

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

 

你可能感兴趣的:(开发)