Unity集成Firebase Firestore初始化异常:模拟器正常真机失败求助
Unity Firebase Firestore 安卓真机初始化失败排查方案
放弃手动硬编码AppOptions,改用google-services.json自动配置
你当前手动填写AppOptions的方式在安卓真机极易出现配置不匹配问题。Unity集成Firebase安卓端的标准流程是:将Firebase控制台下载的google-services.json放到项目Assets/Plugins/Android目录下,Firebase会自动读取配置,无需手动创建AppOptions。修改初始化代码为:void Start() { FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => { if(task.Result == DependencyStatus.Available){ // 初始化Firestore实例 FirebaseFirestore db = FirebaseFirestore.DefaultInstance; Debug.Log("Firebase 及 Firestore 初始化成功"); } else{ Debug.LogError("无法解析Firebase依赖: " + task.Result); } }); }检查安卓Debug签名的SHA-1是否已添加到Firebase控制台
模拟器用的是默认调试签名,而真机Debug APK用的是Unity自带的debug keystore(或你自定义的),必须把该签名的SHA-1添加到Firebase控制台:- 打开Unity的
Player Settings > Publishing Settings > Keystore Manager,查看Debug Keystore的路径 - 用Java的keytool工具生成SHA-1:
keytool -list -v -keystore [你的debug keystore路径] -alias androiddebugkey -storepass android -keypass android - 把生成的SHA-1添加到Firebase控制台的
项目设置 > 应用 > 安卓应用 > 签名证书指纹中
- 打开Unity的
确认安卓Manifest包含必要权限
确保Assets/Plugins/Android/AndroidManifest.xml里有网络权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />检查Firebase SDK与Unity版本的兼容性
确保你导入的Firebase SDK版本和当前Unity版本匹配,建议用Firebase官方推荐的对应版本SDK包,版本不匹配是真机运行失败的常见原因。调整初始化时机
把初始化代码从Awake移到Start方法中,避免Unity启动初期依赖未加载完成的问题。
内容的提问来源于stack exchange,提问作者Recep Baykan
相关产品推荐
相关产品推荐

