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

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


当前回答

我找到了一个方便的方法,我想与大家分享。

对于Windows

USB访问一次

不需要根

将手机和电脑连接到热点,或从手机运行便携式热点并将电脑连接到该热点。

按照brian的指示获取手机的ip(如果你正在使用手机制作热点,则不需要)

adb shell ip -f inet addr show wlan0

打开记事本

写下这些

@echo off
cd C:\android\android-sdk\platform-tools
adb tcpip 5555
adb connect 192.168.43.1:5555

将上面给出的位置更改为电脑包含abd.exe文件的位置

将ip更改为手机ip。

注意:上面给出的IP是android设备成为热点时的基本IP。如果您正在连接到wifi网络,并且设备的IP在每次连接到热点时都在不断变化,您可以通过在wifi设置中进行配置使其保持静态。谷歌搜索。

现在将文件保存为ABD_Connect.bat(MS-DOS批处理文件)。

将其保存在某个位置,并指向“桌面”或“开始”按钮的快捷方式。

通过USB连接一次,然后尝试运行一些应用程序。之后,只要您想无线连接,请双击快捷方式。

注意:有时您需要在每次调试应用程序时打开快捷方式。所以在桌面上为快捷键设置快捷键会更方便。我做了一个快捷键,如Ctrl+Alt+S。所以每当我想调试时,我都会按Shift+F9和Ctrl+Alt+S

注意:如果在cmd窗口中发现device=null错误,请检查您的IP,它可能已更改。

其他回答

手动流程

从你的设备,如果它是根

根据xda开发人员的一篇帖子,您可以通过以下命令从设备通过Wi-Fi启用ADB:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

您可以禁用它,并使用

setprop service.adb.tcp.port -1
stop adbd
start adbd

从计算机,如果您已经有USB访问权限(不需要root)

如果你已经有了USB,切换到使用Wi-Fi更容易。通过USB连接设备的计算机上的命令行发出命令

adb tcpip 5555
adb connect 192.168.0.101:5555

确保将192.168.0.101替换为实际分配给设备的IP地址。完成后,可以通过运行以下命令断开与adb-tcp会话的连接:

adb disconnect 192.168.0.101:5555

您可以通过两种方式查找平板电脑的IP地址:

手动IP发现:

进入Android的WiFi设置,单击操作栏中的菜单按钮(垂直省略号),点击高级,然后在屏幕底部看到IP地址。

使用ADB发现IP:

通过adb执行以下命令:

adb shell ip -f inet addr show wlan0

告诉ADB守护程序返回USB监听

adb usb

自动化流程的应用程序

Google Play上还有几个应用程序可以自动完成这一过程。快速搜索可以找到adbWireless、WiFi ADB和ADB WiFi。所有这些都需要root访问权限,但adbWireless需要更少的权限。

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中获取屏幕截图,您可以从其名称中猜到。

使用TCP端口连接平板电脑。确保您的系统和设备连接到同一网络。

打开控制台cmd.exeadb-tcpip 5555型转到系统->开发选项->USB调试->取消选中TCPIP连接键入adb connect 192.168.1.2这是您的设备IP地址连接到192.168.1.2

使用端口转发连接尝试进行端口转发,

adb转发tcp:<PC端口>tcp:<设备端口>

如:

adb转发tcp/ip:5555 tcp:5555。C: \Users\abc>adb转发tcp:7612 tcp:7612C: \Users\abc>adb-tcpip 7612在TCP模式下重新启动端口:7612C: \Users\abc>adb连接10.0.0.1:7612连接至10.0.0.1:7612

若您收到错误消息:找不到设备,请将usb设备连接到系统,然后执行相同的步骤。对于根设备

setprop service.adb.tcp.port 5555
stop adbd
start adbd

首先,您必须通过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正常

完成。享受

我不知道如何在没有任何USB连接的情况下连接设备,但如果您设法在另一台计算机上连接,您可以通过发出以下命令将adbd切换到TCP模式

adb tcpip <port>

通过以下方式从终端连接到您的设备:

adb connect <ip>:<port>

也许也可以从设备上的终端切换到TCP模式。