You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android构建中Firebase Auth登录及数据获取耗时异常求助

Android构建版本Firebase Auth登录耗时极长问题排查方案

问题现象

Android构建版本中,Firebase Auth登录流程耗时异常:登录成功的日志需等待4-5分钟才输出,后续Firestore获取用户数据的日志无输出,全程无报错或异常。编辑器及iOS构建版本无此问题。

排查与解决建议

  • 检查Android网络权限与配置
    确保AndroidManifest.xml中已添加必要网络权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    针对Android 9及以上版本,若Firebase相关域名未配置HTTPS,需添加network_security_config文件允许明文访问,或确认Firebase域名支持HTTPS。

  • 优化任务调度逻辑
    当前代码中ContinueWithOnMainThread在Android平台可能引发主线程阻塞,建议将非UI操作放在后台线程执行,仅在需要更新UI/输出日志时切回主线程:

    public static void SignIn(string email, string password, Action callback)
    {
        _auth.SignInWithEmailAndPasswordAsync(email, password)
            .ContinueWith(task => {
                // 后台线程处理登录结果
                if (task.IsCanceled)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => Debug.LogError("Sign in was canceled"));
                    return;
                }
                if (task.IsFaulted)
                {
                    UnityMainThreadDispatcher.Instance().Enqueue(() => Debug.LogError($"Error during sign in: {task.Exception}"));
                    return;
                }
    
                var signedInUser = task.Result;
                // 后台线程获取用户数据
                GetUserData(signedInUser.UserId, () => {
                    // 完成后切回主线程执行回调与日志
                    UnityMainThreadDispatcher.Instance().Enqueue(() => {
                        Debug.Log($"User signed in successfully. Name: {signedInUser.DisplayName}, ID: {signedInUser.UserId}");
                        callback?.Invoke();
                    });
                });
            }, TaskContinuationOptions.RunContinuationsAsynchronously);
        Debug.Log("Log in request sent, waiting for finish");
    }
    

    同时确认ContinueWithOnMainThread的实现无主线程阻塞问题,或改用官方推荐的UnityMainThreadDispatcher处理主线程回调。

  • 升级Firebase SDK版本
    将Firebase Auth与Firestore的Unity SDK升级至最新稳定版,旧版本可能存在Android平台的网络请求阻塞bug。

  • 启用Firebase调试日志
    开启Firebase详细日志,通过Android Studio的Logcat定位瓶颈:

    Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;
    

    过滤Firebase相关日志,确认是Auth登录请求缓慢,还是Firestore获取数据阶段出现阻塞。

  • 排查网络环境
    测试不同网络环境(Wi-Fi/移动数据),排除运营商对Firebase域名的限制;尝试使用VPN连接,验证是否为网络链路问题。

内容的提问来源于stack exchange,提问作者Don Andre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 13:20:35