更换Apple M1后调用SignInWithEmailAndPasswordAsync提示USE_AUTH_EMULATOR未设置
问题原因与解决方案
出现「USE_AUTH_EMULATOR not set.」提示的核心原因是:M1架构Mac上,Unity运行时对环境变量的读取逻辑和Intel架构存在差异,仅通过System.Environment.SetEnvironmentVariable设置模拟器地址无法被Firebase Auth SDK正确识别;另外旧版本Firebase SDK在ARM架构下的兼容性问题,也会触发该提示。
以下是针对性解决步骤:
显式调用Auth模拟器初始化方法
不要依赖环境变量,直接在获取FirebaseAuth实例后调用UseEmulator方法指定模拟器地址和端口。修改你的Start方法:private void Start() { auth = Firebase.Auth.FirebaseAuth.DefaultInstance; // 添加这行代码指定模拟器地址 auth.UseEmulator("127.0.0.1", 9099); dbManager = DBmanager.Instance; errorCheckSignIn = false; errorCheckSignUp = false; }升级Firebase SDK至最新稳定版
旧版本Firebase SDK对M1架构支持不完善,可能导致环境变量读取失效。下载适配Unity的最新Firebase SDK,替换项目中的旧SDK文件。检查Unity编辑器运行架构
打开Unity「Player Settings」,在「Other Settings」中找到「Architecture」选项,设置为「Universal」或「ARM64」,避免以Intel兼容模式运行编辑器,确保环境变量和SDK逻辑正常工作。区分编辑器与发布环境
如果项目在编辑器中用模拟器测试、发布版本连接生产环境,可通过宏定义区分,避免发布版本出现模拟器提示:private void Start() { auth = Firebase.Auth.FirebaseAuth.DefaultInstance; #if UNITY_EDITOR // 仅在编辑器中启用模拟器 auth.UseEmulator("127.0.0.1", 9099); #endif dbManager = DBmanager.Instance; errorCheckSignIn = false; errorCheckSignUp = false; }
内容的提问来源于stack exchange,提问作者tayfur
相关产品推荐
相关产品推荐

