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

WSL2环境下Flutter连接VM Service遇SocketException连接拒绝问题

解决WSL2中Flutter连接Windows模拟器VM Service被拒绝的问题

1. 打通WSL2与Windows的adb服务

  • 在WSL2里关闭本地adb服务:adb kill-server
  • 获取Windows主机的网关IP(WSL2访问Windows的入口):cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
  • 设置WSL2的adb指向Windows端的服务:export ADB_SERVER_SOCKET=tcp:<刚才拿到的WindowsIP>:5037
  • 启动adb:adb start-server,执行adb devices能看到Windows模拟器就说明adb连通正常

2. 转发VM Service端口到WSL2

  • Flutter在Windows模拟器上启动的VM Service默认是随机端口(比如你的43678),需要把这个端口从Windows映射到WSL2:
    1. 在WSL2里获取自身IP:hostname -I | awk '{print $1}'
    2. 打开Windows管理员权限的PowerShell,执行端口转发命令:
      netsh interface portproxy add v4tov4 listenport=43678 listenaddress=0.0.0.0 connectport=43678 connectaddress=<WSL2的IP>
  • 嫌随机端口麻烦的话,运行Flutter时强制指定固定端口:flutter run --vm-service-port=43678

3. 修复VSCode构建失败问题

  • 打开VSCode设置,搜索dart.flutterAdditionalArgs,添加配置项:["--vm-service-port=43678"],确保运行时用固定端口
  • 把ADB_SERVER_SOCKET的配置写到WSL2的shell配置文件(比如~/.bashrc或~/.zshrc)中,避免每次重启都要设置:
    编辑文件添加:export ADB_SERVER_SOCKET=tcp:<Windows主机IP>:5037,执行source ~/.bashrc生效

4. 排查连通性问题

  • 在WSL2里执行telnet <Windows主机IP> 43678,能连通说明端口转发没问题
  • 如果还是被拒绝,检查Windows防火墙是否允许该端口的入站连接,或临时关闭防火墙测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:37:13