Facebook app id 导致无法打包

本文解决了一个在使用Facebook登录功能时遇到的打包问题。通过在meta-data中加入tools:ignore属性并设置string字段为不可翻译,成功解决了资源配置错误。

好久没写了,今天遇到了这个问题,虽然可能国内的朋友可能很少遇上,但还是随心的记录一下,毕竟搞了两小时,就两行代码而已。


直接到主题:应用要使用facebook 登录,根据官方文档一步一步来,一切都很顺利,当到最后要打包的时候,却遇到了无法打包的问题。


Errors before ignored:
.../src/main/AndroidManifest.xml:109: Error: Resources referenced from the manifest cannot vary by configuration (except for version qualifiers, e.g. -v21.) Found variation in zh-rTW [ManifestResource]
            android:value="@string/facebook_app_id"/>
                           ~~~~~~~~~~~~~~~~~~~~~~~
.../src/main/res/values-zh-rTW/strings.xml:151: This value will not be used

   Explanation for issues of type "ManifestResource":
   Elements in the manifest can reference resources, but those resources
   cannot vary across configurations (except as a special case, by version,
   and except for a few specific package attributes such as the application
   title and icon.)

异常就是这样,一开始还把

<string name="facebook_app_id" translatable="false">******************</string>
直接复制到:zh\strings.xml 里面,又报出了另一个错误。所以最终的解决办法是:
<meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"
    tools:ignore="ManifestResource"/>
<string name="facebook_app_id" translatable="false">*****************</string>
是的,在meta-data中加入
tools:ignore="ManifestResource"
以及在string 的字段里加上 translatable="false" 就是不翻译的意思,就是这么简单。
参照了:https://code.google.com/p/android/issues/detail?id=194705  和 http://stackoverflow.com/questions/35388688/android-facebook-app-id-showing-error-in-values-ta-strings-xml-and-cant-able

<think>好的,我现在需要解决用户在Unity中集成Facebook SDK后打包过程卡住的问题。首先,我得回忆一下常见的Unity打包卡住的原因,可能涉及到依赖冲突、资源过大、SDK版本不兼容、Gradle配置错误等。根据用户提供的引用,特别是引用[1]提到的Gradle构建失败和AAPT2错误,这可能与Android构建过程中的资源处理有关。同时,引用[4]提到iOS SDK路径的问题,可能需要检查iOS相关的设置。 用户的问题集中在Facebook SDK集成后的打包卡顿,所以应该先检查Facebook SDK的兼容性。可能需要确认是否使用了最新版本的Facebook SDK,或者是否存在与其他插件的冲突。例如,External Dependency Manager(EDM4U)的版本是否合适,如引用[1]中提到的版本1.2.176可能存在兼容性问题,可能需要升级或降级。 接下来,考虑步骤:首先清理项目,删除Library和Temp文件夹,避免缓存问题。然后,检查Gradle设置,是否使用了正确的Gradle版本,或者尝试在Unity中切换Gradle到内置版本。另外,可能需要检查AndroidManifest.xml中的配置是否正确,特别是Facebook SDK需要的权限和Activity声明是否有误。 对于iOS的情况,引用[4]提到的路径问题可能涉及到Xcode配置,需要确保Facebook SDK的iOS部分正确集成,可能检查CocoaPods依赖是否正确安装,或者是否有重复的库文件导致冲突。 此外,查看日志是关键,用户需要提供更详细的错误日志,比如在构建过程中卡住的具体位置,是否有AAPT2的错误信息,这可能需要调整AAPT2的配置,如在gradle.properties中添加android.enableAapt2=false,但需要注意这可能不适用于新版本的Gradle。 还要考虑内存问题,尤其是在处理大型项目时,增加Unity的堆内存分配可能有助于避免卡死。同时,分步构建,比如先导出Android项目到Android Studio,再构建,可能帮助定位问题。 最后,建议用户查看Facebook官方文档和社区,是否有已知的解决方案或补丁。如果所有方法都无效,可能需要简化测试场景,新建一个空白项目集成Facebook SDK,逐步排查问题来源。</think>### Unity中集成Facebook SDK后打包卡住的解决方案 #### 1. **检查依赖管理工具版本** - 更新**External Dependency Manager (EDM4U)**至最新版本。旧版本(如引用[1]中的1.2.176)可能与新版本SDK存在兼容性问题。 - 操作步骤: - 通过Unity Asset Store或GitHub下载最新版EDM4U[^1]。 - 删除旧版本后重新导入。 #### 2. **清理项目缓存** - 删除Unity工程中的临时文件夹: - `Library` - `Temp` - `Build` - 作用:避免残留文件导致构建冲突[^4]。 #### 3. **验证Facebook SDK配置** - **Android端检查**: - 确保`AndroidManifest.xml`中已正确添加Facebook的`<meta-data>`和`<activity>`标签。 - 示例代码: ```xml <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"/> ``` - **iOS端检查**: - 确认Xcode工程中`Info.plist`包含Facebook的`CFBundleURLSchemes`字段。 - 使用CocoaPods集成时,检查`Podfile`是否包含Facebook SDK依赖。 #### 4. **调整Gradle构建配置** - 若报错涉及**AAPT2**(如引用[1]): - 在`gradle.properties`中添加: ```properties android.enableAapt2=false ``` - 注意:此方法仅适用于旧版Unity,新版可能需改用Gradle 6.x+兼容配置。 - 切换Unity内置Gradle: - 打开`Preferences > External Tools`,取消勾选**Custom Gradle**,使用Unity自带的Gradle版本。 #### 5. **分步构建定位问题** - **导出为Android Studio工程**: - 在Unity中勾选`Export Project`选项,生成Android Studio工程后手动构建,观察错误日志。 - **缩小测试范围**: - 新建空白Unity项目,仅集成Facebook SDK,验证是否能正常打包。若成功,说明原项目存在插件冲突。 #### 6. **解决资源冲突** - 检查是否有重复的`.aar`或`.jar`文件(如多个SDK包含相同库)。 - 操作: - 删除`Assets/Plugins/Android`下重复文件。 - 使用EDM4U的**Resolver > Force Resolve**重新同步依赖。 #### 7. **调整Unity内存限制** - 修改Unity启动参数(适用于大型项目卡在构建阶段): - 在快捷方式目标路径后追加: ```bash -force-opengl -malloc=system -nographics -memory=8192m ``` #### 8. **参考官方文档与社区** - 查阅Facebook SDK官方故障排除指南: [Unity SDK Troubleshooting](https://developers.facebook.com/docs/unity/troubleshooting) - 检查已知问题,例如: - 部分Unity版本需禁用**Split Application Binary**(iOS设置中)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值