使用多个构建错误INSTALL_FAILED_CONFLICTING_PROVIDER

时间:2016-05-11 00:17:54

标签: android facebook manifest

我有以下结构gradle:

productFlavors {
        main {
            applicationId = "com.mayapp.main"
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 5
            versionName '2.0'
        }
        free {
            applicationId = "com.mayapp.free"
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 5
            versionName '2.0'
        }
        full {
            applicationId = "com.mayapp.full"
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 5
            versionName '2.0'
        }
}

在主构建中拥有唯一的清单文件,它是Facebook的这个提供者。

<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />

但是当尝试安装另一个版本时,free会出现INSTALL_FAILED_CONFLICTING_PROVIDER错误。如何解决此冲突,因为所有版本都使用相同的Facebook ID?

2 个答案:

答案 0 :(得分:0)

如果您想在同一设备中安装不同的应用,请确保其中没有相同的提供商(权限),或者您应该卸载第一个

答案 1 :(得分:0)

我设法解决了这个冲突。 例如,在免费构建中,我使用以下格式创建了一个AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mayapp.free"
    xmlns:tools="http://schemas.android.com/tools">

...
<meta-data android:name="com.facebook.sdk.ApplicationId"
            tools:replace="android:value"
            android:value="@string/facebook_app_id"/>

        <provider android:authorities="com.facebook.app.FacebookContentProvider0123456789"
            android:name="com.facebook.FacebookContentProvider"
            tools:replace="android:authorities"
            android:exported="true"/>

这解决了我的冲突。 细节,必须在门户网站Facebook中创建更多应用程序,每个构建一个。