Unity应用APK版本Firebase Authentication无法正常工作问题排查
解决Unity打包Android后Firebase认证失效问题
问题核心分析
从Logcat报错InvalidOperationException: Don't call other Firebase functions while CheckDependencies is running来看,问题出在Firebase依赖检查被重复触发,或者依赖检查过程中其他Firebase方法被调用,导致线程冲突。编辑器与Android真机的线程调度逻辑不同,因此出现编辑器正常、打包后失效的差异。
修正后的初始化代码
给初始化逻辑加锁避免重复执行,同时强制回调在Unity主线程执行:
using UnityEngine; using Firebase; using Firebase.Auth; using System; public class FirebaseInitScript : MonoBehaviour { public static event Action OnFirebaseInitialized; public static bool firebaseReady; // 标记锁,防止重复触发依赖检查 private static bool isCheckingDependencies; void Start() { CheckIfReady(); } public static void CheckIfReady() { // 若正在检查则直接返回,避免重复执行 if (isCheckingDependencies) return; isCheckingDependencies = true; Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => { isCheckingDependencies = false; Firebase.DependencyStatus dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { _ = Firebase.FirebaseApp.DefaultInstance; firebaseReady = true; Debug.Log("Firebase is ready for use."); OnFirebaseInitialized?.Invoke(); } else { firebaseReady = false; Debug.LogError($"Could not resolve all Firebase dependencies: {dependencyStatus}"); } }); } }
额外排查步骤
- 确认
google-services.json文件已放置在Assets/Plugins/Android目录,且打包时未被排除(检查Unity PlayerSettings→Android→Build Settings,确保该文件被包含进构建)。 - 核对Firebase SDK版本与Unity版本的兼容性,避免版本不匹配导致适配问题。
- 检查所有调用Firebase的业务代码,确保操作都在
OnFirebaseInitialized事件触发后执行,禁止在依赖检查完成前调用任何Firebase API。
内容的提问来源于stack exchange,提问作者XaiVer Turgen
相关产品推荐
相关产品推荐

