意思: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'
}
}
网友评论