问题:应用组件的命名与已安装应用有冲突

问题描述:

截图类似如下:

问题

在做马甲应用(多变体APP)的时候,由于只配置了不同的applicationId 和相应的代码目录,并没有对ContentProvider 和项目中的第三方库等配置做修改,就出现了这个错误。一般都是由于两个APP的清单文件中的providerauthorities 是一样的导致的。
另一个原因就是一些第三方库(如极光),也需要进行各个变体的配置,若是相同则也会出现此类错误。

解决方案:

1、针对provider 进行修改,使用${applicationId} 进行替换固定包名


         

2、针对第三方库的配置进行修改:

如极光的配置,以某一receiver 为例:【主要是配置不同的JPUSH_PKGNAME

  • AndroidMainifest.xml

  
      
      
      
      
      
      
  

  • build.gradle
productFlavors {
    v1 {    //变体1
        versionCode 1
        versionName "1.1.1"
        applicationId "com.test.v1"
        if (applicationId.endsWith('.debug')) { //debug
            manifestPlaceholders = [
                    JPUSH_APPKEY: "xxx",  //极光APPid
                    JPUSH_PKGNAME: applicationId  //可直接引用
            ]
        } else {    //release
            manifestPlaceholders = [
                    JPUSH_APPKEY: "xxx",  //极光APPid
                    JPUSH_PKGNAME: applicationId  //可直接引用
            ]
        }
    }
    v2 {    //变体2
        versionCode 2
        versionName "2.2.2"
        applicationId "com.test.v2"
        if (applicationId.endsWith('.debug')) { //debug
            manifestPlaceholders = [
                    JPUSH_APPKEY: "xxx",  //极光APPid
                    JPUSH_PKGNAME: applicationId  //可直接引用
            ]
        } else {    //release
            manifestPlaceholders = [
                    JPUSH_APPKEY: "xxx",  //极光APPid
                    JPUSH_PKGNAME: applicationId  //可直接引用
            ]
        }
    }
}

需要注意:

相同签名,不同包名的APP是可以同时安装的。但不能有指定的唯一的标识。

参考资料:

Android中由于ContentProvider导致的“应用组件的命名与已安装应用有冲突”问题

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

你可能感兴趣的:(问题:应用组件的命名与已安装应用有冲突)