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
相关产品推荐
相关产品推荐

