当我构建多个productFlavors时,使用Facebook SDK INSTALL_FAILED_CONFLICTING_PROVIDER

时间:2015-06-09 05:42:01

标签: android facebook android-contentprovider android-facebook android-productflavors

我正在构建一个包含多个productFlavors的Android应用,并使用Facebook SDK v4.1进行登录和共享内容。问题是,当我尝试在已经安装了相同应用程序(但风格不同)的设备上安装应用程序时,会引发错误。它不允许我安装第二个应用程序,除非我卸载现有的应用程序。

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

根据这个documentandroid:authorities应该是唯一的,我应该有多个身份验证来完成我想要做的事情。但是,我不能拥有多个Facebook AppId,并且想知道是否有更好的方法来解决这个问题。提前感谢任何可以帮助我的人!

3 个答案:

答案 0 :(得分:6)

请尝试以下内容:

 清单

<provider android:authorities="com.facebook.app.FacebookContentProvider${facebookId}"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="fb${facebookId}"/>

摇篮

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "com.your.package"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"

        manifestPlaceholders = [facebookId:"123456789"]
    }

    productFlavors {
    debug {
        applicationIdSuffix ".debug"
        manifestPlaceholders = [facebookId:"1234"]
    }
    release {
        applicationIdSuffix ".pro"
        manifestPlaceholders = [facebookId:"123456789"]
    }
}

答案 1 :(得分:-1)

您可以使用:

清单

<provider android:authorities="@string/facebook_app_authority"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />

摇篮

productFlavors {
    flavor1 {
        applicationId "com.id.flavor1"
        versionCode 1
        versionName "1.0.0"
        resValue "string", "facebook_app_authority", "com.facebook.app.FacebookContentProvider0000000000000000"
    }
    flavor2 {
        applicationId "com.id.flavor2"
        versionCode 1
        versionName "1.0.0"
        resValue "string", "facebook_app_authority", "com.facebook.app.FacebookContentProvider0000000000000001"
    }
}

将0000000000000000替换为您的App id

答案 2 :(得分:-7)

<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"/>