Unity 2022.3.11 Android端Firebase.FirebaseApp初始化异常排查
解决Unity中Firebase初始化异常:"The type initializer for 'Firebase.FirebaseApp' threw an exception"
针对你使用Unity 2022.3.11开发安卓应用时遇到的Firebase初始化错误,以下是对应问题的解答:
1. 错误的成因
这个类型初始化异常通常由以下几种原因导致:
- 核心配置缺失:未正确放置或配置
google-services.json文件,或者文件中的包名与Unity项目设置的包名不匹配 - 依赖冲突/不兼容:Unity的Android依赖(如AndroidX)与Firebase SDK的依赖版本冲突,或Firebase SDK版本与Unity 2022.3.11不兼容
- 构建资源未正确打包:Gradle构建过程中,Firebase的核心AAR包或资源未被正确引入到APK中
- 权限缺失:设备缺少网络权限(Firebase初始化需要联网验证配置),或Unity项目未声明
INTERNET权限 - 初始化时机问题:在Unity的早期生命周期(如
Awake)中调用Firebase初始化,此时Android环境尚未完全就绪
2. 是构建配置问题还是Firebase包内容问题?
两者都有可能,但结合你已通过External Dependency Manager处理Gradle模板并配置了AndroidX,更偏向构建配置问题,但仍需先排查包内容:
- 先确认Firebase Unity SDK是否完整导入:检查Assets目录下是否有
Firebase/Core等核心模块,若无则重新导入对应版本的SDK - 验证
google-services.json是否放在Assets/Plugins/Android目录下,且文件中的package_name与Unity Player设置里的包名完全一致 - 若包内容无问题,则重点排查构建配置和依赖冲突
3. Gradle配置调整方案
基于你已生成的Gradle模板,可按以下步骤调整:
(1)检查baseProjectTemplate.gradle
确保allprojects.repositories中包含Google和Maven中央仓库:
allprojects { repositories { google() mavenCentral() flatDir { dirs "${project(':unityLibrary').projectDir}/libs" } } }
(2)调整mainTemplate.gradle
- 确保文件末尾添加了Google Services插件:
apply plugin: 'com.google.gms.google-services' - 添加依赖版本统一策略,避免冲突:
configurations.all { resolutionStrategy { // 替换为你使用的Firebase和Google Play Services对应版本 force 'com.google.firebase:firebase-core:21.1.1' force 'com.google.android.gms:play-services-base:18.2.0' } }
(3)优化gradleTemplate.properties
除已有的AndroidX配置,添加内存优化参数:
android.useAndroidX=true android.enableJetifier=true org.gradle.jvmargs=-Xmx4096m
(4)Unity Player设置验证
- 确认Player设置 > 其他设置中,
Custom Main Gradle Template、Custom Base Gradle Template等选项已勾选 - 检查包名与
google-services.json中的package_name完全一致 - 确保最小API级别不低于Firebase SDK要求(通常为API 16及以上)
(5)排查辅助步骤
- 查看Logcat详细日志:该异常通常包含内部嵌套异常,通过Logcat可以定位具体缺失的类或依赖
- 临时禁用自定义Gradle模板:移除
Assets/Plugins/Android下的四个模板文件,让Unity自动生成默认配置,测试是否能正常构建 - 清理构建缓存:通过Unity菜单
File > Build Settings > Clean Build Folder清理缓存后重新构建
内容的提问来源于stack exchange,提问作者Choco Naak
相关产品推荐
相关产品推荐

