facebook登录功能xml文件中application Id的配置问题

在实现Facebook登录功能时,遇到XML文件中application Id的配置问题。当在不同语言的string资源文件中定义facebook_application_id时,系统提示不能有配置上的差异。尝试删除其中一个定义或直接在manifest的meta-data中写value,都会导致错误。最终从Facebook的源代码中找到解决方案,FacebookSdk类中展示了如何正确赋值applicationId。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Resources referenced from the manifest cannot vary by configuration(except for version qualifiers, e.g. -v21.) Found variation in zh-rCN

facebook登录功能实现步骤:

1,写一个string资源,名字无所谓,如facebook_application_id.

2,配置facebook activity和mete-data

  <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:label="@string/app_name" />
        <meta-data android:name="com.facebook.sdk.ApplicationId"  android:value="@string/facebook_app_id"/>


SO..........................问题来了

1,如果软件支持多种语言,就一定要编写多个string文件,在每个string文件中定义facebook_application_id,此时出现错误如下:




2,好像是说不能在不同文件中定义两个id,所以就删了一个呗。。。然后打包时就出现了下面的错:




3,所以就不配置application_id了,直接在manifest文件meta-data中写value,不引用string,但是这时就出现如下错误:



这也不行,那也不行,我本来要告诉老大实现不了呢,万念俱灰下看了下facebook代码库,发现applicationId赋值代码如下(FacebookSdk类):

 if (applicationId == null) {
            Object appId = ai.metaData.get(APPLICATION_ID_PROPERTY);
            if (appId instanceof String) {
                String appIdString = (String) appId;
                if (appIdString.toLowerCase(Locale.ROOT).startsWith("fb")) {
                    applicationId = appIdString.substring(2);
                } else {
                    applicationId = appIdString;
                }
            } else if (appId instanceof Integer) {
                throw new FacebookException(
                        "App Ids cannot be directly placed in the manifest." +
                        "They must be prefixed by 'fb' or be placed in the string resource file.");
            }
        }
如果appId是字符串,大写变小写后以fb开头就把fb去了用后面的,于是想到可以在meta-data中直接用申请的id前加fb的字符串,试了试,果然成了。

哈哈,那一个开心,简直不是一顿饭两顿饭能比的,简直重新认识了世界,重新睁开了眼睛,哈哈哈哈。。。。。。。。。。。。。。。。。。。。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值