我正在尝试调试摩托罗拉Droid上的应用程序,但通过USB连接到设备时遇到一些困难。我的开发服务器是一个在Hyper-V中运行的Windows 7 64位虚拟机,因此我无法在来宾或主机中通过USB直接连接。
我安装了两种不同的USB over TCP解决方案,但连接似乎有问题,因为ADB监视器反复报告“devicemonitor failed to start monitoring”。是否有一种方法可以直接从开发机器上的客户端连接到设备上的守护程序,使用网络而不是USB连接或其他可行的选项?
我正在尝试调试摩托罗拉Droid上的应用程序,但通过USB连接到设备时遇到一些困难。我的开发服务器是一个在Hyper-V中运行的Windows 7 64位虚拟机,因此我无法在来宾或主机中通过USB直接连接。
我安装了两种不同的USB over TCP解决方案,但连接似乎有问题,因为ADB监视器反复报告“devicemonitor failed to start monitoring”。是否有一种方法可以直接从开发机器上的客户端连接到设备上的守护程序,使用网络而不是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中获取屏幕截图,您可以从其名称中猜到。
其他回答
我需要让USB和TCPIP都为ADB工作(不要问),所以我做了以下工作(使用其他人从xda开发人员发布的指示)
使用adb shell:
su
#Set the port number for adbd
setprop service.adb.tcp.port 5555
#Run the adbd daemon *again* instead of doing stop/start, so there
#are two instances of adbd running.
adbd &
#Set the port back to USB, so the next time ADB is started it's
#on USB again.
setprop service.adb.tcp.port -1
exit
来自adb--帮助:
connect <host>:<port> - Connect to a device via TCP/IP
顺便说一下,这是一个命令行选项。
您应该尝试将手机连接到Wi-Fi,然后从路由器获取其IP地址。它在蜂窝网络上不起作用。
端口是5554。
这些是我遵循的步骤,对我来说很有效,
adbshellifconfig(从这里获取设备的ip地址)adb-tcpip 7777(将adb连接到某个端口)adb connect“ipad地址”:7777
假设您已将adb路径保存到Windows环境路径中
在Android中激活调试模式通过USB连接到PC打开命令提示符类型:adb-tcpip 5555断开平板电脑或智能手机与电脑的连接打开命令提示符类型:adb connect IPADDRESS(IPADDRESS是平板电脑或智能手机的DHCP/IP地址,可以通过Wi-Fi->当前连接的网络找到)
现在在命令提示符中,您应该看到这样的结果:connected to xxx.xxx.xxx.xxxx:55555
我发现其他答案令人困惑。使用adbWireless要简单得多:
http://ppareit.github.com/AdbConnect/
只需在手机上安装一个应用程序,通过wifi切换调试,安装一个eclipse插件,就完成了。