我正在尝试调试摩托罗拉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连接或其他可行的选项?
当前回答
使用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连接的情况下连接设备,但如果您设法在另一台计算机上连接,您可以通过发出以下命令将adbd切换到TCP模式
adb tcpip <port>
通过以下方式从终端连接到您的设备:
adb connect <ip>:<port>
也许也可以从设备上的终端切换到TCP模式。
从非根设备上的计算机
(请注意,这也可以使用根设备完成,但您可以在不需要USB连接的根设备上使用外壳)
首先,打开命令提示符(CMD)。如果您使用Android Studio或IntelliJ,您可以使用其中包含的控制台。
如果路径中添加了adb,则可以跳过cd部分。
如果可能,请打开SDK位置,右键单击,然后按“此处启动命令提示符”。并非所有人都有此选项,因此您也必须执行以下命令:
Windows:更换驱动器(如果适用)
D:
并访问sdk和平台工具。将此路径替换为SDK位置:
cd /sdk/path/here/platform-tools
现在您可以访问Android调试桥。
将设备连接到计算机后,请执行以下操作:
adb tcpip <port>
adb connect <ip>:<port>
其中,<port>是您要连接的端口(默认值为5555),<ip>是您想要连接的设备的ip。
请注意:5555是默认端口,只需写入IP地址即可连接。如果您使用自定义端口,至少可以稍微提高安全性。通过Wi-Fi进行USB调试可能被滥用,但前提是设备连接到想要滥用设备的计算机。使用非默认端口至少会使连接有点困难。
如果使用自定义端口,请确保将其添加到IP之后。没有端口连接到5555,如果不使用,连接将失败。
您可以通过两种方式查找设备的IP地址:
具体名称可能因设备而异。打开设置并转到关于设备->状态->IP地址使用ADB获取IP
在控制台上,执行以下操作:
adb shell ip -f inet addr show wlan0
完成连接后,您可以通过以下操作断开设备与计算机的连接:
adb disconnect <ip>:<port>
或者没有IP来断开所有设备。如果使用自定义端口,则必须指定要断开连接的端口。这里的默认值也是5555。
要禁用端口(如果您想这样做),请在连接设备的情况下执行以下命令:
adb usb
或者您可以重新启动设备以删除tcpip连接
从根设备上的计算机
首先,您需要访问外壳。您可以使用usb电缆连接设备并使用adb外壳,也可以从Google Play、FDroid或其他来源下载应用程序。
然后你会:
su
setprop service.adb.tcp.port <port>
stop adbd
start adbd
要连接设备,您可以像在非根版本中一样,通过adb connect<ip>:<port>。
如果您想禁用端口并返回USB监听:
setprop service.adb.tcp.port -1
stop adbd
start adbd
你也可以使用Android Studio插件为你做这件事(现在不要记住这个名字),对于root用户,还可以下载Android应用程序来设置电话连接(adb connect可能仍然需要)。
一些手机在开发者选项中有一个设置(这适用于一些未登录的手机,但可能也适用于一些根手机),允许在没有根用户或计算机连接的情况下通过设备本身的Wi-Fi切换ADB
您还可以使用SSH本地端口转发。但它仍然需要USB电缆。使用USB将手机连接到运行sshd的计算机(主机)。在远程(来宾)pc上启动能够端口转发/隧道的SSH客户端。例子:
plink -L 5037:localhost:5037 <host_IP_address>
我使用这种构造将设备连接到虚拟机。Eltima USB转以太网不够稳定(调试期间超时)。
SSH隧道免费工作,更可靠。
adb tcpip 5555
奇怪,但这只适用于我,如果我连接了USB电缆,那么我就可以拔下USB并使用其他adb。
当返回到usb时也是如此,
adb usb
只有在连接了usb的情况下才能工作。
如果我发布
setprop service.adb.tcp.port 5555
or
setprop service.adb.tcp.port -1
然后停止并启动adbd,我仍然需要usb电缆,否则它无法工作。
所以,如果我的ADB over usb不工作,我打赌我也无法通过WiFi启用ADB。
这是Mac/Linux通过Wi-Fi连接到Android设备的单线图,但首先必须通过USB连接到设备。
# sleep 5 is to wait for the device to restart listening.
adb kill-server && adb tcpip 5555 && sleep 5 && adb shell ip route | awk '{print $9}' | xargs adb connect