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

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


当前回答

我创建了一个批处理文件,用于通过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

其他回答

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

对于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,它可能已更改。

使用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

我创建了一个批处理文件,用于通过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,它将自动设置您的手机。

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