JDM*_*JDM 855 debugging networking android tcp adb
我正在尝试在Motorola Droid上调试应用程序,但是我在通过USB连接到设备时遇到了一些困难.我的开发服务器是在Hyper-V中运行的Windows 7 64位VM ,因此无法通过客户端或主机上的USB直接连接.
我安装了几个不同的USB-over-TCP解决方案,但由于ADB监视器反复报告"devicemonitor无法开始监视" ,因此连接似乎存在问题.有没有办法使用网络直接从开发机器上的客户端连接到设备上的守护进程,而不是使用USB连接或可能的其他可行选项?
Bri*_*ian 1164
根据xda-developers上的一篇文章,您可以使用以下命令从设备启用Wi-Fi上的ADB:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)
你可以禁用它并返回ADB来监听USB
setprop service.adb.tcp.port -1
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)
如果您已经拥有USB,那么切换到使用Wi-Fi会更容易.从通过USB连接设备的计算机上的命令行发出命令
adb tcpip 5555
adb connect 192.168.0.101:5555
Run Code Online (Sandbox Code Playgroud)
请务必替换192.168.0.101
为实际分配给您设备的IP地址.
您可以通过两种方式找到平板电脑的IP地址:
手动IP发现:
进入Android的WiFi设置,单击操作栏中的菜单按钮(垂直省略号),点击高级,然后查看屏幕底部的IP地址.
使用ADB发现IP:
通过adb执行以下命令:
adb disconnect 192.168.0.101:5555
Run Code Online (Sandbox Code Playgroud)
告诉ADB守护进程返回通过USB监听
adb shell ip -f inet addr show wlan0
Run Code Online (Sandbox Code Playgroud)
Google Play上还有一些应用可以自动完成此过程.快速搜索建议adbWireless,WiFi ADB和ADB WiFi.所有这些都需要root访问权限,但adbWireless需要更少的权限.
小智 131
如果您的手机已植根,这非常简单.
从Google Play下载终端模拟器(有很多免费的).确保您的Android设备已连接到Wi-Fi并获取Wi-Fi IP地址.打开终端程序并输入:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)
现在转到您的计算机(假设您使用的是Windows)并在桌面上为"cmd.exe"创建快捷方式(不带引号).
右键单击cmd快捷方式并选择 "Run as Administrator"
切换到您的android-sdk-windows\tools
文件夹
类型:
adb connect ***wifi.ip.address***:5555
(example: adb connect 192.168.0.105:5555)
Run Code Online (Sandbox Code Playgroud)
adb现在应该说你已经连接了.
注意:如果您太快而无法提供connect命令,则可能会失败.因此,在您说这不起作用之前,至少尝试两次五秒钟.
Rib*_*das 88
通过USB连接设备并确保调试正常,然后运行:
adb tcpip 5555
adb connect <DEVICE_IP_ADDRESS>:5555
Run Code Online (Sandbox Code Playgroud)断开USB连接并继续进行无线调试.
完成后想要切换回USB调试,运行:
adb -s <DEVICE_IP_ADDRESS>:5555
Run Code Online (Sandbox Code Playgroud)要查找设备的IP地址,请转到Settings > Wi-Fi > Advanced > IP Address
您的设备或运行adb shell netcfg
.
不需要root.一次只能调试一个设备.
看到这个XDA帖子.
该adb
命令位于platform-tools
Android SDK 的文件夹中.
小智 59
假设您已将adb路径保存到Windows环境路径中
在Android中激活调试模式
通过USB连接到PC
打开命令提示符类型: adb tcpip 5555
断开平板电脑或智能手机与电脑的连接
打开命令提示符类型:( adb connect IPADDRESS
IPADDRESS是平板电脑或智能手机的DHCP/IP地址,您可以通过Wi-Fi找到 - >当前连接的网络)
现在在命令提示符下,您应该看到如下结果:connect to xxx.xxx.xxx.xxx:5555
Nat*_*han 54
来自adb --help
:
connect <host>:<port> - Connect to a device via TCP/IP
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这是一个命令行选项.
您应尝试将手机连接到Wi-Fi,然后从路由器获取其IP地址.它无法在蜂窝网络上运行.
港口是5554.
小智 41
对于PC用户:
第1步:
您必须在Android手机中启用开发者选项.
您可以使用这种方式启用开发人员选项.
•打开设置>关于>软件信息>更多.
•然后点击"Build number"七次以启用Developer选项.
•返回"设置"菜单,现在您可以在那里看到"开发人员选项".
•点击它并从下一个屏幕上的菜单中打开USB Debugging.
第2步:
打开cmd并输入adb.
如果您发现adb不是有效命令,则必须添加环境变量的路径.
•首先转到SDK安装的文件夹
遵循此路径,此路径仅用于示例.d:\软件\开发\ Andoird\SDK\SDK \平台工具\; d:\软件\开发\ Andoird\SDK\SDK \工具;
•现在搜索Windows系统高级设置
打开Environment变量.
然后打开路径并粘贴以下路径这是一个例子.
您的SDK路径与我的不同请使用您的.d:\软件\开发\ Andoird\SDK\SDK \平台工具\;
d:\软件\开发\ Andoird\SDK\SDK \工具;
第3步:
打开cmd并输入adb.如果您仍然看到adb不是有效命令,那么您的路径未正确设置,请按照上述步骤操作.
现在您可以将Android手机连接到PC.
打开cmd并输入adb设备,即可看到您的设备.
找到你的手机IP地址.
键入: - adb tcpip 5555
获取手机的IP地址
adb shell netcfg
Run Code Online (Sandbox Code Playgroud)
现在,
adb connect "IP address of your phone"
Run Code Online (Sandbox Code Playgroud)
现在运行你的Android项目,如果没有看到你的设备,然后再键入adb连接手机的IP地址
对于Linux和MAC用户:
第1步:打开终端并使用安装adb
通过USB线将手机连接到PC.在终端中键入以下命令
adb tcpip 5555
Run Code Online (Sandbox Code Playgroud)
使用adb,连接你的Android手机IP地址.
删除你的手机.
tra*_*or1 33
我需要得到两个 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
Run Code Online (Sandbox Code Playgroud)
Zoe*_*Zoe 33
(请注意,这也可以使用root设备完成,但您可以在不需要USB连接的root设备上使用shell)
首先,打开命令提示符(CMD).如果您使用Android Studio或IntelliJ,则可以使用其中包含的控制台.
如果可能,请打开SDK位置,右键单击,然后按"在此处启动命令提示符".并非所有人都有此选项,因此您还必须执行此(/这些)命令:
更换驱动器(如果适用)
D:
Run Code Online (Sandbox Code Playgroud)
并访问sdk和平台工具.将此路径替换为SDK位置:
cd /sdk/path/here/platform-tools
Run Code Online (Sandbox Code Playgroud)
现在您可以访问Android调试桥.
现在,将设备连接到计算机,执行以下操作:
adb tcpip <port>
adb connect <ip>:<port>
Run Code Online (Sandbox Code Playgroud)
您要连接的端口在哪里(默认为<port>
),并且是您要连接的设备的IP.
请注意:5555
是默认端口,只需写入IP地址就可以连接它.如果使用自定义端口,至少可以提高安全性.通过wifi进行USB调试可能会被滥用,但前提是设备连接到想要滥用设备的计算机.使用非默认端口至少会使连接更加困难.
如果您使用自定义端口,请确保在IP之后添加它.写入没有端口连接到<ip>
,如果你没有使用它连接将失败.
您可以通过两种方式找到设备的IP地址:
根据您的设备,确切的名称可能会有所不同.打开设置,然后转到关于设备 - > 状态 - > IP地址
使用ADB获取IP
从控制台,执行:
adb shell ip -f inet addr show wlan0
Run Code Online (Sandbox Code Playgroud)
完成连接后,您可以通过执行以下操作断开设备与计算机的连接:
adb disconnect <ip>:<port>
Run Code Online (Sandbox Code Playgroud)
或者没有IP断开所有设备.如果使用自定义端口,则必须指定要断开连接的端口.此处的默认值为5555.
要禁用端口(如果这是您要执行的操作),请在连接的设备上执行以下命令:
adb usb
Run Code Online (Sandbox Code Playgroud)
或者您可以重新启动设备以删除tcpip连接
首先,您需要访问shell.您可以使用USB线连接设备,也可以使用5555
或下载Google Play,FDroid或其他来源的应用.
然后你做:
su
setprop service.adb.tcp.port <port>
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)
要连接设备,您可以通过执行非root用户身份5555
.
如果你想禁用端口并返回USB监听:
setprop service.adb.tcp.port -1
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)
您也可以使用Android Studio插件为您完成此操作(现在不记得名称),对于root用户,还可以选择下载Android应用以设置电话连接(可能仍需要adb connect) ).
有些手机在开发人员选项中有一个设置(这适用于一些无根电话,但也可能是一些根电话),允许通过wifi从设备本身切换ADB,无需root或计算机连接即可启动它.虽然手机很少有这种功能
rin*_*esh 32
使用TCP端口连接平板电脑.确保您的系统和设备已连接到同一网络.
adb tcpip 5555
adb connect 192.168.1.2
这是您的设备IP地址使用端口转发连接 尝试进行端口转发,
adb forward tcp:<PC port>
tcp:<device port>
喜欢:
adb forward tcp:5555 tcp:5555.
C:\ Users\abc> adb forward tcp:7612 tcp:7612
C:\ Users\abc> adb tcpip 7612在TCP模式端口重启:7612
C:\ Users\abc> adb connect 10.0.0.1:7612
连接到10.0.0.1:7612
如果您收到消息错误:找不到设备将USB设备连接到系统,然后按照相同的步骤.
对于有根设备
setprop service.adb.tcp.port 5555
stop adbd
start adbd
Run Code Online (Sandbox Code Playgroud)
小智 30
我根本不知道如何在没有任何USB连接的情况下连接设备,但如果您设法连接它可能在另一台计算机上,您可以通过发布将adbd切换到TCP模式
adb tcpip <port>
Run Code Online (Sandbox Code Playgroud)
从终端通过网络中的任何PC通过wifi连接到您的设备:
adb connect <ip>:<port>
Run Code Online (Sandbox Code Playgroud)
也许也可以从设备上的终端切换到TCP模式.
Joo*_*lah 29
首先,您必须通过USB连接设备
然后将您的设备连接到WIFI并获取IP地址.虽然仍然通过usb连接,但在命令行或通过Android Studio终端输入
adb tcpip 5555
adb connect <device IP>:5555
Run Code Online (Sandbox Code Playgroud)
您将看到以下消息:
restarting in TCP mode port: 5555
connected to 172.11.0.16:5555
Run Code Online (Sandbox Code Playgroud)
现在移除USB电缆,您仍然可以正常看到您的logcat
完成.请享用
off*_*rse 11
正如布莱恩所说:
根据xda-developers上的帖子,您可以使用命令从设备启用WiFi上的ADB
setprop service.adb.tcp.port 5555
停止adbd
开始adbd
你可以禁用它并返回ADB来监听USB
setprop service.adb.tcp.port -1
停止adbd
开始adbd
如果您已经有USB访问权限,则更容易切换到使用WiFi.从通过USB连接设备的计算机上的命令行发出命令
adb tcpip 5555
adb connect 192.168.0.101:5555
告诉ADB守护进程返回通过USB监听
adb usb
Android Market上还有几个应用程序可以自动完成此过程.
它的工作原理.你只需要访问android shell并输入那些命令......
另一个(更简单)的解决方案是在市场上:adbWireless,它会自动设置你的手机.
Root是必需的!对彼此而言...
小智 9
adb tcpip 5555
Run Code Online (Sandbox Code Playgroud)
很奇怪,但这只适用于我,如果我连接了USB线,那么我可以拔掉USB,然后用其他所有东西adb.
和返回usb时一样,
adb usb
Run Code Online (Sandbox Code Playgroud)
仅在USB连接时才有效.
如果我发出这个并不重要
setprop service.adb.tcp.port 5555
Run Code Online (Sandbox Code Playgroud)
要么
setprop service.adb.tcp.port -1
Run Code Online (Sandbox Code Playgroud)
然后停止并启动adbd,我仍然需要USB电缆或它不起作用.
所以,如果我的ADB over usb不起作用,我打赌我也无法通过WiFi启用ADB.
要只使用一个命令在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
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用属性service.adb.tcp.enable
来启用或禁用端口5555上netstat
的侦听.运行以检查它是否正在侦听.如您所见,如果您希望service.adb.tcp.port
手动更改它也会触发.
确保双方的ADB主机和Android设备是同一WiFi网络.
使用USB线将Android设备与计算机连接.一旦这样做,主机将检测到您的设备,并且adb将开始在计算机上以USB模式运行.您可以检查连接的设备,然后adb devices
通过执行确保adb在USB模式下运行adb usb
.
$ adb usb
restarting in USB mode
$ adb devices
List of devices attached
ZX1D63HX9R device
Run Code Online (Sandbox Code Playgroud)
使用以下命令在tcpip模式下重新启动adb:
$ adb tcpip 5556
restarting in TCP mode port: 5556
Run Code Online (Sandbox Code Playgroud)
找出Android设备的IP地址.有几种方法可以做到这一点:
$ adb shell netcfg
.现在您已知道设备的IP地址,请将您的adb主机连接到它.
$ adb connect 192.168.0.102:5556
already connected to 192.168.0.102:5556
$ adb devices
List of devices attached
ZX1D63HX9R device
192.168.0.102:5556 device
Run Code Online (Sandbox Code Playgroud)
拔下USB线,您应该连接到您的设备.如果你没有看到它,adb devices
那么只需使用上一步的命令重新连接:
$ adb connect 192.168.0.102:5556
connected to 192.168.0.102:5556
$ adb devices
List of devices attached
192.168.0.102:5556 device
Run Code Online (Sandbox Code Playgroud)
要么你现在好了,要么你需要通过执行adb kill-server
并再次执行所有步骤来杀死你的adb服务器.
希望有所帮助!
参考:
Bash util函数:
function adb-connect-to-wifi {
ip="$(adb shell ip route | awk '{print $9}')"
port=5555
adb tcpip ${port}
adb connect ${ip}:${port}
}
Run Code Online (Sandbox Code Playgroud)
这些是我遵循的步骤,它对我有用,
adb shell ifconfig(从这里获取设备的IP地址)
adb tcpip 7777(将 adb 连接到某个端口)
adb 连接“ipaddress”:7777
小智 5
您也可以使用SSH本地端口转发.但它仍然涉及USB电缆.使用USB将手机连接到运行sshd的计算机(主机).在远程(来宾)PC上启动一个能够进行端口转发/隧道连接的SSH客户端.例:
plink -L 5037:localhost:5037 <host_IP_address>
Run Code Online (Sandbox Code Playgroud)
我使用这种结构将我的设备连接到虚拟机.Eltima USB到以太网不够稳定(调试期间超时).
SSH隧道免费工作,更可靠.
JDM*_*JDM -34
在最终放弃通过 TCP 直接连接设备的可能性后,我最终让 Eltima USB 转以太网软件正常工作。我几乎已经决定,不可能仅通过模拟器连接到网络设备。