我正在尝试调试摩托罗拉Droid上的应用程序,但通过USB连接到设备时遇到一些困难。我的开发服务器是一个在Hyper-V中运行的Windows 7 64位虚拟机,因此我无法在来宾或主机中通过USB直接连接。

我安装了两种不同的USB over TCP解决方案,但连接似乎有问题,因为ADB监视器反复报告“devicemonitor failed to start monitoring”。是否有一种方法可以直接从开发机器上的客户端连接到设备上的守护程序,使用网络而不是USB连接或其他可行的选项?


当前回答

首先,您必须通过USB连接设备

然后将设备连接到WIFI并获取IP地址。当仍然通过usb连接时,在命令行或通过Android Studio终端键入

adb tcpip 5555
adb connect <device IP>:5555

您将看到以下消息:

restarting in TCP mode port: 5555
connected to 172.11.0.16:5555

现在卸下USB电缆,您仍会看到logcat正常

完成。享受

其他回答

来自adb--帮助:

connect <host>:<port>         - Connect to a device via TCP/IP

顺便说一下,这是一个命令行选项。

您应该尝试将手机连接到Wi-Fi,然后从路由器获取其IP地址。它在蜂窝网络上不起作用。

端口是5554。

在最终放弃了通过TCP直接连接到设备的可能性之后,我最终让Eltima USB转以太网软件开始工作。我几乎已经决定,仅通过仿真器不可能通过网络连接到设备。

adb可以通过tcp套接字与adb服务器通信。您可以通过telnet进行验证。

$ telnet 127.0.0.1 5037
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
000chost:version
OKAY00040020

通常,命令的格式为%04x%s,带有<message.length><msg>以下是ruby命令witch针对tcp套接字套接字发送adb命令cmd

def send_to_adb(socket, cmd)
  socket.printf("%04x%s", cmd.length, cmd)
end

第一个示例发送命令host:version,其长度为12(十六进制为000c)。您可以享受像framebuffer这样更令人兴奋的命令:它从framebuffer中获取屏幕截图,您可以从其名称中猜到。

我只是遵循以下步骤,它开始工作,这样我就可以连接到我的android设备。

步骤1:在Android设备中打开终端窗口并执行以下命令。

su——切换到超级用户。setprop service.adb.tcp.port 5555-指定tcp端口-5555是此处的端口号stop adbd-停止adbb服务。start adbd-启动adbd服务。

步骤2:通过ADB,执行以下命令。(从配置ADB的路径)

adb connect 10.10.10.50:555-这里10.10.10.50是android设备的IP地址,5555是端口号。

首先,您必须通过USB连接设备

然后将设备连接到WIFI并获取IP地址。当仍然通过usb连接时,在命令行或通过Android Studio终端键入

adb tcpip 5555
adb connect <device IP>:5555

您将看到以下消息:

restarting in TCP mode port: 5555
connected to 172.11.0.16:5555

现在卸下USB电缆,您仍会看到logcat正常

完成。享受