Unity接入Firebase实时数据库时Android资源文件生成失败求助
解决方案
1 优先解决路径编码问题
- 你当前项目路径包含非ASCII泰米尔字符、路径目录名包含空格,Firebase 7.2.0版本自带的配置生成脚本依赖Python2运行,对特殊字符和空格的路径解析存在原生缺陷,是触发自动生成配置失败的核心原因
- 将整个Unity项目迁移到纯英文、无空格、无任何非ASCII字符的路径下,同时将存放google-services.json的
Firebase Data目录重命名为无空格的名称(如FirebaseData),重新导入配置文件测试生成逻辑
2 跳过自动生成步骤,手动导入配置文件
如果路径修改后仍无法自动生成配置,可直接跳过自动生成流程:
- 自行将google-services.json转换为符合Firebase规则的google-services.xml文件
- 手动将转换后的xml文件放入
Assets/Plugins/Android/FirebaseApp.androidlib/res/values/目录下,即可覆盖自动生成逻辑,不需要再执行Python脚本生成
3 修复运行时报错
编辑器运行正常、Android端报错的原因是移动端初始化逻辑和打包依赖缺失,按以下步骤处理:
- 升级Firebase SDK到8.10.0版本,该版本为官方明确适配Unity 2020.3LTS的稳定版本,可解决7.2.0版本的兼容缺陷
- 进入Player Settings > Publishing Settings,勾选
Custom Main Gradle Template、Custom Gradle Properties Template,让Firebase自动注入Android打包所需的依赖配置,避免打包时丢失Cpp相关so库 - 所有Firebase相关的接口调用必须放在依赖检查完成之后,禁止在Awake/Start生命周期直接调用DefaultInstance,参考代码:
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // 初始化完成后再获取数据库实例 DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference; } else { UnityEngine.Debug.LogError($"Firebase依赖初始化失败: {dependencyStatus}"); } });
4 适配自动生成逻辑(可选)
如果需要使用Unity的自动生成配置功能,按以下步骤调整Python环境:
- 安装Python3版本,将系统默认Python指向Python3
- 找到
com.google.firebase.app@7.2.0/Firebase/Editor/generate_xml_from_google_services_json.py文件,将文件首行的解释器声明修改为Python3路径即可解决编码解析问题
内容的提问来源于stack exchange,提问作者Maran
相关产品推荐
相关产品推荐

