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

Flutter物理设备连接Firebase模拟器时出现FirebaseAuthException连接错误求助

Flutter物理设备连接Firebase模拟器时出现FirebaseAuthException连接错误求助

嘿,我之前也碰到过一模一样的问题,给你梳理下问题根源和解决办法:

首先你代码里的IP设置踩了两个坑——10.0.2.2是**Android虚拟模拟器(AVD)**专属的电脑localhost映射地址,物理设备根本识别不了;而且你把物理设备的IP也设成localhost,这会让设备尝试连接自己,而不是你电脑上的模拟器,这就是错误里显示它还在连10.0.2.2的原因。

下面是一步步的解决步骤:

1. 获取电脑的局域网IP地址

这是物理设备能访问到你电脑的核心:

  • Windows:打开命令提示符,输入ipconfig,找到「以太网适配器 本地连接」或「WLAN」下的IPv4地址(比如192.168.1.105)
  • macOS/Linux:打开终端,输入ifconfig或ip addr,找到本地网络接口的IP地址(通常是192.168.x.x格式)

2. 修改Flutter代码的IP配置

把代码里的ip变量替换成你刚拿到的电脑局域网IP,示例如下:

String ip = kIsWeb ? 'localhost' : '192.168.1.105'; // 替换成你的电脑局域网IP
FirebaseFirestore.instance
    .useFirestoreEmulator(ip, 8080, sslEnabled: false);
await FirebaseAuth.instance.useAuthEmulator(ip, 9099);

3. 配置Firebase模拟器允许外部连接

默认情况下,Firebase模拟器只允许本地访问,物理设备属于局域网外部设备,需要修改firebase.json文件:
打开项目根目录的firebase.json,在emulators部分添加host: "0.0.0.0",让模拟器接受来自局域网的连接:

{
  "emulators": {
    "auth": {
      "port": 9099,
      "host": "0.0.0.0"
    },
    "firestore": {
      "port": 8080,
      "host": "0.0.0.0"
    }
  }
}

修改完成后重启Firebase模拟器,让配置生效。

4. 检查电脑防火墙设置

别忽略了防火墙的拦截!确保你允许firebase emulators相关进程通过防火墙,或者临时关闭防火墙测试(测试完记得重新开启)。

可选:adb反向隧道(若上述步骤仍有问题)

虽然用局域网IP通常不需要反向隧道,但如果还是有连接故障,可以执行以下命令,把设备的端口映射到电脑:

adb reverse tcp:9099 tcp:9099
adb reverse tcp:8080 tcp:8080

这时候代码里的ip可以设回localhost,但我更推荐用局域网IP,因为反向隧道偶尔会出现缓存或冲突问题。

按照这些步骤操作后,应该就能解决连接错误啦!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 10:48:12