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

Unity构建Android APK后Firebase认证失效,编辑器运行正常

Unity Firebase Auth打包APK后卡在依赖检查的解决方案

问题场景

Unity开发的应用集成Firebase Auth,编辑器内注册、登录及数据交互完全正常,但打包为APK安装到安卓设备后,注册/登录无响应,调试发现代码卡在FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread处,推测Auth对象初始化异常。已尝试添加网络权限、调整google-services.json位置、添加meta-data配置,但问题未解决。

可行解决方案

1. 排查SDK与Unity版本兼容性

Firebase SDK和Unity版本不兼容是这类问题的常见根源:

  • 确认使用的Firebase SDK版本与你的Unity版本匹配(比如Unity 2020+建议使用Firebase 8.0+版本),避免混用过于老旧或超前的SDK包。
  • 卸载当前Firebase SDK,重新从Firebase控制台下载对应版本的Unity SDK包导入项目。

2. 修正Gradle配置

Unity默认的Gradle模板可能缺少Firebase必要的配置:

  • 打开Edit > Project Settings > Player > Android > Publishing Settings,勾选Use Custom Gradle Template。
  • 编辑Assets/Plugins/Android/mainTemplate.gradle,在buildscript的dependencies块中添加:
    classpath 'com.google.gms:google-services:4.3.15'
    
  • 在文件末尾添加:
    apply plugin: 'com.google.gms.google-services'
    
  • 同时确保Gradle版本不低于6.7.1(可在Project Settings > Player > Android > Gradle Settings中调整)。

3. 检查设备Google Play服务版本

安卓设备上Google Play Services版本过低会直接导致Firebase初始化失败:

  • 在设备的应用商店中搜索并更新Google Play服务。
  • 可以在代码中添加预检查逻辑,提前提示用户更新:
    void CheckGooglePlayServicesStatus()
    {
        int resultCode = GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(UnityEngine.Application.Context);
        if (resultCode != ConnectionResult.Success)
        {
            if (GoogleApiAvailability.Instance.IsUserResolvableError(resultCode))
            {
                GoogleApiAvailability.Instance.GetErrorDialog(UnityEngine.Application.Context, resultCode, 9000).Show();
            }
            else
            {
                Debug.LogError("当前设备不支持Google Play服务,无法使用Firebase功能");
            }
        }
    }
    
    在Firebase初始化前调用此方法。

4. 确保google-services.json配置正确

  • 从Firebase控制台重新下载google-services.json,确认文件中的包名与Unity项目的Bundle Identifier完全一致(大小写、字符都要匹配)。
  • 将文件放在Assets/目录下,执行Firebase > Tools > Refresh Firebase让Unity重新导入配置。
  • 检查打包时是否将该文件正确嵌入APK:可以解压APK,查看assets/google-services.json是否存在。

5. 添加异步任务异常捕获

当前代码可能因未捕获异常导致流程中断,修改初始化代码,添加异常处理:

FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
    if (task.IsFaulted)
    {
        foreach (var exception in task.Exception.Flatten().InnerExceptions)
        {
            Debug.LogError("Firebase初始化异常: " + exception.Message);
        }
        return;
    }

    var dependencyStatus = task.Result;
    if (dependencyStatus == DependencyStatus.Available)
    {
        // 正常初始化Auth
        FirebaseAuth auth = FirebaseAuth.DefaultInstance;
        // 后续业务逻辑
    }
    else
    {
        Debug.LogError($"无法解析Firebase依赖: {dependencyStatus}");
    }
});

打包后通过Android Studio的Logcat查看具体错误信息,定位问题根源。

6. 清理不必要的Manifest配置

删除手动添加的com.google.android.gms.version meta-data,Firebase SDK会自动管理Google Play服务版本,手动指定可能导致版本冲突。同时确保Manifest中包含必要权限:

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

内容的提问来源于stack exchange,提问作者Adam Jones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:33:23