远程连接的安卓设备无法使用Adb reverse tcp功能

21

我正在尝试在远程连接的Android设备上执行反向tcp命令(使用 adb connect <ip-address>),但是当我执行时遇到以下错误:

adb -s 192.168.0.101 reverse tcp:8081 tcp:8081
error: more than one device/emulator

但是我只有一个设备连接。

adb devices
List of devices attached
192.168.0.101:5555      device

如果我使用 USB 连接我的设备,相同的命令可以正常工作。有什么想法吗?


一样的问题!adb forward可以工作,但是adb reverse不能!你解决了吗? - cdanzmann
3个回答

15

我刚刚发现了这个问题,虽然所有答案都不起作用,但我最终使其能够重复工作。按照以下步骤,您应该能够在真实的 Android 设备上无线调试您的 React Native 应用程序。

首先我运行了adb kill-server && adb start-server,但我不确定这是否是必需的。

  1. 将手机和电脑连接到同一 WiFi 环境中
  2. 通过 USB 将手机连接到电脑
  3. adb tcpip 5555
  4. adb reverse tcp:8081 tcp:5555
  5. adb connect YOUR.PHONE.IP.ADDRESS:5555

您可以在网络设置 -> WiFi -> WiFi 首选项 -> IP 地址中找到您的手机的 WiFi IP 地址。

  1. 断开 USB 连接。
  2. 如果应用程序还没有安装,请像通常通过 USB 连接那样在手机上安装应用程序,大多数情况下使用 react-native run android 命令即可安装。

打开应用程序后,您会看到 “无法加载脚本” 错误。单击“重新加载”会出现“无法连接到开发服务器”错误。不要灰心,继续前进。

  1. 打开开发者菜单(在您的 React Native 应用程序中摇动手机),然后选择 “Dev Settings”。从菜单中选择 “Debug server host & port for device”。 查找计算机的 IP 地址。在手机窗口中输入此地址,后跟端口号 8081:YOUR.COMPUTER.IP.ADDRESS:8081
  2. 接下来摇晃并重新加载应用程序。有时这不起作用,因此关闭应用程序并重新打开即可。

此时,您应该看到熟悉的绿色条形加载器正在加载捆绑程序。

  1. 摇晃并选择“远程调试JS”。

从这里开始,您应该拥有正常的调试体验,无需使用线缆。


在第四步中,第二个套接字应该是 tcp:5555 还是 tcp:8081 - mz8i
我的理解如下:第4步中的第2个套接字是您想要桥接到手机上的套接字。我在第3步中选择了5555,这就是我的手机正在侦听的端口。这就是我需要在第4步和第5步中使用作为第2个套接字的原因。 - Lazer Porter
这个可行!第四步不需要。 - Alan

2
adb kill-server

adb start-server

adb reverse tcp:8081  tcp:8081

1
虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Yunnosch

1
我发现如果我进行TCP/IP连接,需要在连接到远程设备之前设置反向命令。
示例:
adb tcpip 5555
adb reverse tcp:8081 tcp:8081
adb connect 192.168.1.113

如果我在执行反向连接之前进行连接,我将始终收到有关多个设备/模拟器的错误提示


如果在连接到远程设备之前设置了反向命令,则端口转发仅在 USB 模式下工作,而不是 TCP 模式下。如果您想让端口转发在 TCP 模式下工作,则必须在 adb connect 命令之后运行它。 - Alan
为什么你要加上5555然后连接到8081?这没有任何意义。 - showtime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接