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

如何指定主机地址运行Firebase模拟器,解决Flutter物理设备连接端口占用问题

解决方案

1 彻底清除端口占用进程

你之前的杀进程操作可能没有完全清理掉Firestore模拟器的残留进程,Firestore模拟器依赖Java运行,经常会出现主进程杀了子进程还占端口的情况:

  • Mac/Linux 执行命令:
    先确认占用8080端口的进程ID:
    lsof -i :8080
    强制杀死对应进程:
    kill -9 <你查到的进程ID>
    也可以直接批量清理所有Firebase相关残留进程:
    pkill -f firebase
    pkill -f firestore
  • Windows 执行命令:
    先查占用8080端口的进程ID:
    netstat -ano | findstr :8080
    强制杀死对应进程:
    taskkill /PID <你查到的进程ID> /F
    如果仍有残留可以直接清理所有Java进程(如果电脑上有其他需要运行的Java程序请慎用):
    taskkill /IM java.exe /F

2 清理模拟器残留锁文件

Firebase模拟器异常退出时会留下锁文件,即使端口空闲也会报错占用,执行以下操作:

  • 删除全局缓存的模拟器锁文件:
    Mac/Linux路径:~/.cache/firebase/emulators/.lock
    Windows路径:C:\Users\<你的系统用户名>\.cache\firebase\emulators\.lock
  • 删除当前项目下的.firebase临时目录,清除残留状态。

3 临时换端口排查

如果以上两步操作后仍然报错,先修改firebase.json里的firestore端口为其他未占用端口(比如8081),测试是否可以正常启动:

"emulators": {
  "firestore": {
    "host": "0.0.0.0",
    "port": 8081
  }
}

如果更换端口后可以正常启动,说明8080端口被系统其他隐藏服务占用,可以继续排查对应服务,或者直接使用新端口配置即可。

4 物理设备连接配置

模拟器启动成功后,按以下配置实现Flutter物理设备连接:

  1. 确保物理设备和你的电脑连接同一个局域网
  2. 查看你电脑的局域网IP地址(一般是192.168.x.x格式,不要用127.0.0.1或者0.0.0.0)
  3. Flutter端初始化Firebase之后,添加模拟器连接配置:
// 替换成你自己的电脑局域网IP和对应模拟器端口
const localIp = '192.168.1.101';
FirebaseFirestore.instance.useFirestoreEmulator(localIp, 8080);
FirebaseAuth.instance.useAuthEmulator(localIp, 9099);
FirebaseStorage.instance.useStorageEmulator(localIp, 9199);
FirebaseFunctions.instance.useFunctionsEmulator(localIp, 5001);
  1. Android 9及以上系统的设备,需要在android/app/src/main/AndroidManifest.xml的application标签中添加android:usesCleartextTraffic="true",允许明文HTTP请求访问模拟器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:12:02