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

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


当前回答

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

其他回答

对于Windows用户:

步骤1:您必须在Android手机中启用开发者选项。您可以使用这种方式启用开发人员选项。•打开“设置”>“关于”>“软件信息”>“更多”。•然后点击“Build number”七次以启用开发者选项。•返回“设置”菜单,现在您可以看到“开发人员选项”。•点击它并从下一屏幕的菜单中打开USB调试。

第2步:

打开cmd并键入adb。如果发现adb不是有效的命令,则必须向环境变量添加路径。

•首先转到SDK安装文件夹沿着这条路走,这条路只是一个例子。D: \softwares\Development\Andoird\SDK\SDK\平台工具\;D: \softwares\Development\Andoird\SDK\SDK\tools;•现在搜索windows系统高级设置

打开环境变量。

然后打开路径并粘贴以下路径这是一个例子。你的SDK路径与我的不同,请使用你的。D: \softwares\Development\Andoird\SDK\SDK\平台工具\;D: \softwares\Development\Andoird\SDK\SDK\tools;

步骤3:

打开cmd并键入adb。如果您仍然看到adb不是有效的命令,那么您的路径没有正确设置,请执行上述步骤。

现在,您可以将android手机连接到PC。

打开cmd并键入adb设备,您可以看到您的设备。查找您的电话ip地址。

类型:-adb-tcpip 5555

获取手机的IP地址

adb shell netcfg

Now,

adb connect "IP address of your phone"

现在运行您的android项目,如果没有看到您的设备,请再次键入adb connect您手机的IP地址

对于Linux和macOS用户:

步骤1:打开终端并使用安装adb

sudo apt-get安装android工具adb android工具fastboot

通过USB电缆将手机连接到PC。在终端中键入以下命令

adb tcpip 5555

使用adb,连接你的android手机ip地址。

删除手机。

如果你的手机是根,这真的很简单。

从Google Play下载终端模拟器(有很多是免费的)。确保您的Android设备已连接到Wi-Fi,并获取Wi-Fi IP地址。打开终端程序并键入:

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

现在转到您的计算机(假设您使用的是Windows),在桌面上为“cmd.exe”创建一个快捷方式(不带引号)。

右键单击cmd快捷方式并选择“以管理员身份运行”

更改到android sdk windows\tools文件夹

类型:

adb connect ***wifi.ip.address***:5555

(example: adb connect 192.168.0.105:5555)

adb现在应该说您已连接。

注意:如果速度太快,无法发出connect命令,则可能会失败。所以,在你说这不起作用之前,至少间隔5秒试两次。

要仅使用一个命令在TCP和USB模式之间切换,可以将其添加到/init.rc:

on property:service.adb.tcp.port=*
    restart adbd

on property:service.adb.tcp.enable=1
    setprop service.adb.tcp.port 5555

on property:service.adb.tcp.enable=0
    setprop service.adb.tcp.port -1

现在,您可以使用属性service.adb.tcp.enable启用或禁用端口5555上的侦听。运行netstat检查它是否正在侦听。如您所见,如果您确实希望手动更改service.adb.tcp.port,它也会触发。

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

手动流程

从你的设备,如果它是根

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