我正在尝试调试摩托罗拉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正常

完成。享受

其他回答

在我的系统中,情况如下:

在我的Linux shell中的Android设备上,一个简单的“ifconfig”没有给我IP地址。我必须键入:

如果配置eth0

-or-

网络配置文件

获取我的IP地址。(我知道eth0已配置,因为我在dmesg中看到了它。)然后我执行了以下操作:

setprop服务.adb.tcp.port-1

停止adbd

启动adbd

然后在我的Win7盒子(运行Eclipse3.7.1的盒子)上

\android sdk\平台工具>

而不以管理员身份运行。然后我做了一个

adb连接12.345.678.90

我从来没有放过端口

adb tcpip 5555

它说找不到该设备,然后我的“adb设备”列表中没有任何内容。也就是说,只有当我不执行上面的tcpip命令时,它才有效。

我可以做一个“adb外壳”,并破坏我的Android设备。但我的Android设备现在没有出现在我的运行->运行配置->目标选项卡中。另一方面,如果我将目标选项卡设置为自动。然后,当我通过run->run运行我的应用程序时,它确实会在我的Android设备上运行,即使我的安卓设备甚至没有被列为我的目标之一。

手动流程

从你的设备,如果它是根

根据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需要更少的权限。

我创建了一个批处理文件,用于通过TCP自动启用ADB并将其连接到通过USB连接的设备。有了它,您不必手动输入IP。

@echo off
setlocal

REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools

REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off

REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0

REM Enable TCP
adb -d wait-for-device tcpip %port%

REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i

REM Connect ADB to device
adb connect %IP%:%port%

goto end

:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end

:off
adb wait-for-device usb

:end

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

adb tcpip <port>

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

adb connect <ip>:<port>

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

正如Brian所说:

根据xda开发人员的一篇帖子,您可以使用以下命令在设备上通过WiFi启用ADBsetprop服务.adb.tcp.port 5555停止adbd启动adbd您可以禁用它,并使用setprop服务.adb.tcp.port-1停止adbd启动adbd如果你已经有USB连接,那么切换到使用WiFi就更容易了。通过USB连接设备的计算机上的命令行发出命令adb tcpip 5555adb连接192.168.0.101:5555告诉ADB守护程序返回USB监听adb-usb接口Android市场上也有几个应用程序可以自动完成这一过程。

它可以工作。你只需要访问android shell并键入这些命令。。。

市场上还有一种(更简单的)解决方案:adbWireless,它将自动设置您的手机。

根是必需的!对于两者。。。