【问题标题】:Could not connect to TCP port: Connection refused when trying to open Expo app on Android Emulator in WSL2无法连接到 TCP 端口:尝试在 WSL2 中的 Android 模拟器上打开 Expo 应用程序时连接被拒绝
【发布时间】:2021-02-14 02:47:19
【问题描述】:

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

List of devices attached
emulator-5554   device

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

Couldn't start project on Android: could not connect to TCP port 5554: Connection refused

这是在我尝试了以下之后:

  1. 在我的 WSL2 个人资料中导出 ADB_SERVER_SOCKET=tcp:<MY IP>:5037
  2. 通过(来自上述链接)从我的 Windows 防火墙解除阻止 WSL2 vEthernet 连接
Set-NetFirewallProfile -DisabledInterfaceAliases "vEthernet (WSL)"
  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"

端口如下:

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

【问题讨论】:

  • 这个问题解决了吗@Richard?除了端口转发,我做的一切都是一样的,这是解决方案吗?

标签: expo adb windows-subsystem-for-linux


【解决方案1】:

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

你已经用其他方法解决了吗?

【讨论】:

  • 我只是尝试反向映射(翻转监听/连接地址),但这似乎不起作用。我还没有解决这个问题。
  • 您可以做的另一件事是,如果您想使用模拟器,只需使用 Google Play 商店创建设备即可。在该模拟设备上下载 expo 应用程序并通过 LAN 连接到 expo 服务器。如果您为从 Windows 到 WSL2 的 90000 和 90001 创建端口代理,则可以这样做。然后只需复制exp://&lt;your-windows-ip&gt;:90000,模拟器就会从剪贴板中获取它。我在我的电脑上试过了,它的工作原理。如果您愿意,我可以在答案中更好地解释它。
  • @AitorAlonso 你能像我是菜鸟一样解释一下吗XD
  • 给你@rickerp gist.github.com/tairosonloa/cd848c6f6befb6ba0a0af6924d66ea7e 我从 11 月起就没有与 Expo 合作,但我希望解释足够准确。
【解决方案2】:

我遇到了完全相同的问题,但设置不同(在 Mac 上使用 Expo 和 Metro 捆绑程序)。我通过尝试不同的虚拟设备映像来解决它。也许同样可以帮助你。

到目前为止,与我一起使用的虚拟设备是此屏幕截图中选择的虚拟设备:https://i.stack.imgur.com/CFTJ0.png。截图中的另外两个也有同样的问题。我真的不知道真正的原因,一定是与其他模拟设备的端口访问有关。

图片详情: 名称:4 WVGA (Nexus S) API 29 原料药:29 目标:Android 10.0(谷歌 API) CPU/ABI (x86)

我确信其他图像也可以正常工作(或以某种方式配置其他图像),我只是没有尝试更多,因为它需要很长时间而且它们太大了。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多