Android studio:INSTALL_FAILED_CONFLICTING_PROVIDER facebook sdk

前端之家收集整理的这篇文章主要介绍了Android studio:INSTALL_FAILED_CONFLICTING_PROVIDER facebook sdk前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在面对一个陌生的问题与 android工作室.我有两个 Android应用程序使用Facebook sdk与同一个Facebook应用程序登录分享图片.使用新的api,有必要在里面声明:
<provider android:authorities="com.facebook.app.FacebookContentProvider[app_id]"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true"/>

现在如果其中一个应用程序已经安装在设备上,我尝试安装第二个应用程序,我在Android studio上获得此错误

INSTALL_Failed_CONFLICTING_PROVIDER

这是必需的一个Facebook提供者的问题,那是唯一的

元素在我的应用程序
所以,这样我的两个应用程序不能同时在同一台设备上安装?
我想,如果有一种方法使用相同的提供者,并避免该错误.

解决方法

这是我知道的一个老问题,但是我没有一个明确的答案,我可以找到.想到我会发布我如何做到这一点.

使用相同的Facebook应用程序标识,您不能有两个不同的应用程序(或同一个应用程序使用两个不同的应用程序ID).这会打破ContentProvider的内容.您需要在Facebook开发人员区域的主应用程序下创建一个测试应用程序.然后从那里拿出新的应用程序ID,并保持方便.

接下来,在build.gradle中,将以下条目添加(或附加)到defaultConfig块中.

manifestPlaceholders = [ facebook_app_id:"" ]

然后在你的debug config中添加

manifestPlaceholders = [ facebook_app_id:"<the_debug_app_id_you_kept_handy>"]

然后在你的发行版中添加

manifestPlaceholders = [ facebook_app_id:"<the_original_app_id_you_had>" ]

现在,更改你的AndroidManifest.xml.更改:

<provider android:authorities="com.facebook.app.FacebookContentProvider<original_app_id>"

至:

<provider android:authorities="com.facebook.app.FacebookContentProvider${facebook_app_id}"

并改变:

<Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="<original_app_id>"/>

至:

<Meta-data android:name="com.facebook.sdk.ApplicationId" android:value="${facebook_app_id}"/>

应该这样做您所做的是向清单添加占位符.从本质上讲,这是一个变量,您可以根据构建类型或风格,将您的毕业生构建设置为使用不同的东西来填充其值.

猜你在找的Android相关文章