无法连接到 TCP 端口:尝试在 WSL2 中的 Android 模拟器上打开 Expo 应用程序时连接被拒绝

Ric*_*ard 5 adb windows-subsystem-for-linux expo

我一直在关注本指南https://medium.com/@pellea/using-adb-with-wsl2-7aebbb070a47到目前为止,WSL2 可以通过 Android Studios 看到在 Windows 上运行的模拟器-> AVD 管理器。例如,在 Windows 和 WSL2 上,adb devices正确显示:

List of devices attached
emulator-5554   device
Run Code Online (Sandbox Code Playgroud)

但是,当我转到我的 expo 应用程序并尝试启动 Android 模拟器时,我收到以下错误消息

Couldn't start project on Android: could not connect to TCP port 5554: Connection refused
Run Code Online (Sandbox Code Playgroud)

这是在我尝试以下操作之后:

  1. ADB_SERVER_SOCKET=tcp:<MY IP>:5037在我的 WSL2 配置文件中导出
  2. 通过(来自上面的链接)从我的 Windows 防火墙取消阻止 WSL2 vEthernet 连接
Set-NetFirewallProfile -DisabledInterfaceAliases "vEthernet (WSL)"
Run Code Online (Sandbox Code Playgroud)
  1. 我已经将 5554 从 Windows 转发到 WSL2,以及 5037(从 0.0.0.0 到 127.0.0.1):
$WSL_CLIENT = bash.exe -c "ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'";
$WSL_CLIENT -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
$WSL_CLIENT = $matches[0];
iex "netsh interface portproxy add v4tov4 listenport=5554 listenaddress=127.0.0.1 connectport=5554 connectaddress=$WSL_CLIENT"
Run Code Online (Sandbox Code Playgroud)

端口如下:

netsh interface portproxy show all

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
127.0.0.1       8081        172.25.38.171   8081
0.0.0.0         5037        127.0.0.1       5037
127.0.0.1       5554        172.29.149.0    5554
Run Code Online (Sandbox Code Playgroud)

Kal*_*ski 7

刚刚在世博会上遇到了同样的问题。

这是为我解决的问题:

  1. 检查使用端口 5555 的进程(终端)
    netstat -ano | findstr 5555
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用其 ID 终止进程 (PowerShell)
    Stop-Process -ID [PROCESS_ID] -Force
    
    Run Code Online (Sandbox Code Playgroud)

然后它开始工作了。


小智 -1

您是否尝试将端口 5554 映射到 Windows IP?(或本地主机)。Android 模拟器在 Windows 上运行,而不是在 WSL2 上运行,因此端口代理应该从 WSL2 到 Windows,而不是向后。

您已经用其他方式解决了吗?