我正在构建一个包含多个productFlavors
的Android应用,并使用Facebook SDK v4.1进行登录和共享内容。问题是,当我尝试在已经安装了相同应用程序(但风格不同)的设备上安装应用程序时,会引发错误。它不允许我安装第二个应用程序,除非我卸载现有的应用程序。
<provider android:authorities="com.facebook.app.FacebookContentProvider{my_app_id}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
根据这个document,android:authorities
应该是唯一的,我应该有多个身份验证来完成我想要做的事情。但是,我不能拥有多个Facebook AppId,并且想知道是否有更好的方法来解决这个问题。提前感谢任何可以帮助我的人!
答案 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"/>