美文网首页
INSTALL_FAILED_CONFLICTING_PROVI

INSTALL_FAILED_CONFLICTING_PROVI

作者: toExploreFuture | 来源:发表于2021-05-14 08:55 被阅读0次

意思:provider ---> authorities 冲突了,手机中不能存在相同的authorities,
下面authorities如果写死就容易冲突,导致app,安装不上

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.aaa.bbb.provider"  
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

改进一下 :以applicationId为前缀,applicationId是不重复的,这样authorities就一定不重复。

<provider
          android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

以上讨论的是我们就开发一个应用,如果我们要打马甲包,并且接入了一些三方sdk,这些三方的sdk中有自己自定义规则的authorities,比如极光推送

<provider
      android:name="cn.jpush.android.service.DataProvider"
            android:authorities="${JPUSH_PKGNAME}.DataProvider"
            android:exported="false"
            android:process=":pushcore" />

当我们打第二个包的时候,如果这里不修改,一定会冲突:INSTALL_FAILED_CONFLICTING_PROVIDER
所以在配置productFlavors的时候,像这样修改

productFlavors {
        localTest {
            manifestPlaceholders = [JPUSH_PKGNAME: "com.test.aaa"]
            applicationId 'com.test.aaa'
        }
       
        onlineProduction {
            manifestPlaceholders = [JPUSH_PKGNAME: "com.test.bbb"]
            applicationId 'com.test.bbb'
        }
  }

相关文章

网友评论

      本文标题:INSTALL_FAILED_CONFLICTING_PROVI

      本文链接:https://www.haomeiwen.com/subject/ztgfjltx.html