我正在尝试在Motorola Droid上调试应用程序,但是在通过USB连接到设备时遇到了一些困难。我的开发服务器是在Hyper-V中运行的Windows 7 64位VM ,因此我无法通过客户机或主机中的USB直接连接。
我安装了两个不同的USB-over-TCP TCP解决方案,但是由于ADB监视器反复报告“ devicemonitor无法启动监视” ,因此连接似乎出现了问题。有没有一种方法可以使用网络而不是USB连接或可能的其他可行选择将开发计算机上的客户端直接连接到设备上的守护程序?
我正在尝试在Motorola Droid上调试应用程序,但是在通过USB连接到设备时遇到了一些困难。我的开发服务器是在Hyper-V中运行的Windows 7 64位VM ,因此我无法通过客户机或主机中的USB直接连接。
我安装了两个不同的USB-over-TCP TCP解决方案,但是由于ADB监视器反复报告“ devicemonitor无法启动监视” ,因此连接似乎出现了问题。有没有一种方法可以使用网络而不是USB连接或可能的其他可行选择将开发计算机上的客户端直接连接到设备上的守护程序?
Answers:
根据xda-developers上的帖子,您可以使用以下命令从设备启用基于Wi-Fi的ADB:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
您可以禁用它并返回ADB以通过
setprop service.adb.tcp.port -1
stop adbd
start adbd
如果您已经有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需要的权限更少。
adb tcipip 5555
和adb connect ...
没有必要根。
adb tcpip <port>
仍然需要要么ro.kernel.qemu
被设置(在仿真模式下运行)属性,ro.secure
为0(即,根设备),或ro.debuggable
和service.adb.root
要被设置为1 adbd
,如果没有上述被满足根本不会打开一个TCP / IP连接。有关该变量,请参见netmite.com/android/mydroid/system/core/adb/adb.c adb_main
部分secure
。adbd
在我的无根用户2.3.7上,Android根本不进入TCP / IP模式。
如果您的手机扎根,这真的很简单。
从Google Play下载一个终端模拟器(有很多免费的)。确保您的Android设备已连接到Wi-Fi并获取Wi-Fi IP地址。打开终端程序,然后键入:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
现在转到您的计算机(假设您使用的是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)
亚行现在应该说您已连接。
注意:如果您太快不能发出connect命令,则它可能会失败。因此,相隔五秒钟至少尝试两次,然后再说这不起作用。
adb tcpip 5555
,然后另一个人adb connect myIP:5555
在他们的PC上执行了。他可以在我的手机上安装一个应用程序,但不能远程调试它。是否可以进行远程调试?我的手机上waiting for debugger
永远都有对话。
通过USB连接设备并确保调试正常,然后运行:
adb tcpip 5555
adb connect <DEVICE_IP_ADDRESS>:5555
断开USB并继续进行无线调试。
完成后,想要切换回USB调试,请运行:
adb -s <DEVICE_IP_ADDRESS>:5555
要查找设备的IP地址,请在设备上转到Settings > Wi-Fi > Advanced > IP Address
或运行adb shell netcfg
。
无需root。一次只能调试一个设备。
请参阅此XDA帖子。
该adb
命令位于platform-tools
Android SDK 的文件夹中。
adb tcpip 5555 && adb connect <DEVICE_IP_ADDRESS>:5555
来自adb --help
:
connect <host>:<port> - Connect to a device via TCP/IP
顺便说一下,这是一个命令行选项。
您应该尝试将手机连接到Wi-Fi,然后从路由器获取其IP地址。它在蜂窝网络上不起作用。
端口是5554。
adb tcpip port
将默认值设置为通过USB调试。在后者之后,您可以连接connect host:port
并且应该可以工作
对于Windows用户:
步骤1:
您必须在Android手机中启用“开发人员”选项。
您可以使用这种方式启用开发人员选项。
•打开设置>关于>软件信息>更多。
•然后点击“内部版本号”七次以启用“开发人员”选项。
•返回“设置”菜单,现在您将能够在其中看到“开发人员选项”。
•点击它,然后从下一个屏幕的菜单中打开USB调试。
第2步:
打开cmd并键入adb。
如果发现adb无效命令,则必须向环境变量添加路径。
•首先转到您的SDK安装文件夹,请
按照以下路径进行操作,此路径仅作为示例。D:\ softwares \ Development \ Andoird \ SDK \ sdk \ platform-tools \; D:\ softwares \ Development \ Andoird \ SDK \ sdk \ tools;
•现在在Windows系统高级设置上搜索
打开环境变量。
然后打开路径并粘贴以下路径,这是一个示例。
您的SDK路径与我的不同,请使用您的。D:\ softwares \ Development \ Andoird \ SDK \ sdk \ platform-tools \;
D:\ softwares \ Development \ Andoird \ SDK \ sdk \ tools;
第三步:
打开cmd并键入adb。如果仍然看到adb无效命令,则说明您的路径设置不正确,请按照上述步骤操作。
现在,您可以将android手机连接到PC了。
打开cmd并键入adb devices,您可以看到您的设备。
查找您的电话IP地址。
类型:-adb tcpip 5555
获取手机的IP地址
adb shell netcfg
现在,
adb connect "IP address of your phone"
现在运行您的android项目,如果看不到您的设备,然后再次键入adb连接手机的IP地址
对于Linux和macOS用户:
步骤1:打开终端并使用安装ADB
通过USB电缆将手机连接到PC。在终端中输入以下命令
adb tcpip 5555
使用adb,连接您的android手机ip地址。
取下手机。
(请注意,这也可以使用有根设备进行,但是您可以在不需要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地址
使用亚行获取IP
在控制台中,执行以下操作:
adb shell ip -f inet addr show wlan0
连接完成后,您可以通过以下操作将设备与计算机断开连接:
adb disconnect <ip>:<port>
或没有IP断开所有设备的连接。如果使用了自定义端口,则必须指定要从断开连接的端口。这里的默认值也是5555。
要禁用端口(如果要这样做),请在连接的设备上执行以下命令:
adb usb
或者您可以重新启动设备以删除tcpip连接
首先,您需要访问外壳。您可以使用USB电缆连接设备并使用adb shell
或从Google Play,FDroid或其他来源下载应用程序。
然后,您执行以下操作:
su
setprop service.adb.tcp.port <port>
stop adbd
start adbd
要连接设备,请执行非root版本中的操作adb connect <ip>:<port>
。
如果要禁用端口并返回USB监听,请执行以下操作:
setprop service.adb.tcp.port -1
stop adbd
start adbd
您还可以使用Android Studio插件为您完成操作(现在不记得该名称了),对于具有root用户的用户,还可以选择下载Android应用程序以建立电话连接(可能仍然需要adb connect) )。
某些电话在开发人员选项中有一个设置(这适用于某些非root用户的电话,尽管可能也适用于某些 root用户的电话),该设置允许从设备本身切换通过Wi-Fi的ADB,而无需root用户或计算机连接来启动它。虽然很少有手机
adb shell ip -f inet addr show wlan0
是否可以在某处替换IP地址和端口支持?
我需要得到两个 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
/sbin/adbd
。这可能因电话而异。当然,您必须是root用户...如果您不是root用户,则将无法访问/ sbin。
使用TCP端口连接平板电脑。确保您的系统和设备连接到同一网络。
adb tcpip 5555
adb connect 192.168.1.2
这是您的设备IP地址使用端口转发连接 尝试做端口转发,
adb转发tcp:<PC port>
tcp:<device port>
喜欢:
亚行转发tcp:5555 tcp:5555。
C:\ Users \ abc> adb转发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
su
首先编写以获取根控制台。
首先,您必须通过USB连接设备
然后将您的设备连接到WIFI并获取IP地址。在仍然通过USB连接的情况下,在命令行或Android Studio Terminal中键入
adb tcpip 5555
adb connect <device IP>:5555
您将看到以下消息:
restarting in TCP mode port: 5555
connected to 172.11.0.16:5555
现在拔下USB电缆,您仍然会看到您的logcat正常
做完了 请享用
正如布赖恩所说:
根据xda-developers上的帖子,您可以使用以下命令从设备启用通过WiFi的ADB
setprop service.adb.tcp.port 5555
停止adbd
启动adbd
您可以禁用它并返回ADB以通过
setprop service.adb.tcp.port -1
停止adbd
启动adbd
如果您已经可以使用USB,则切换为使用WiFi甚至更容易。在通过USB连接设备的计算机上的命令行中,发出命令
亚行tcpip 5555
亚行连接192.168.0.101:5555
告诉ADB守护程序返回通过USB监听
亚行USB
Android Market上还有一些可以自动执行此过程的应用程序。
它有效。您只需要访问android shell并键入这些命令...
市场上还有一个更简便的解决方案:adbWireless,它将自动设置您的手机。
根是必需的!对彼此而言...
要仅通过一个命令在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
现在,您可以使用property 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
使用以下命令以tcpip模式重新启动adb:
$ adb tcpip 5556
restarting in TCP mode port: 5556
找出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
拔下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
您现在就可以这样做了,或者您需要通过执行adb kill-server
并再次执行所有步骤来终止adb服务器。
希望有帮助!
参考:
我发现其他答案令人困惑。使用adbWireless简单得多:
http://ppareit.github.com/AdbConnect/
只需在手机上安装一个应用程序即可切换wifi调试,然后安装eclipse插件即可。
我整理了一个批处理文件,用于通过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
这是Brian使用蓝牙的答案的扩展:
在Linux上,使用Blueman通过蓝牙与您的设备共享PC互联网:
$ sudo apt-get install blueman
$ blueman-manager
Pair them: Search devices after enabling Bluetooth
on your phone and making it visible
$ blueman-services
Network > [X] Network Access Point (NAP)
Your Phone > Settings > Bluetooth > Paired Device > [X] Internet access
将蓝牙网络用于ADB命令:
$ adb tcpip 5555
$ adb connect $(adb shell ip -f inet addr show bt-pan | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n1):5555
完成后返回USB模式:
$ adb disconnect
$ adb usb
脚步 :
su
-切换为超级用户。setprop service.adb.tcp.port 5555
-指定tcp端口-5555是此处的端口号stop adbd
-停止adbd服务。start adbd
-启动adbd服务。这与ssh
我的Windows PC 完美搭配
我尝试在我的cyanogen移动设备上启动时执行此操作,或使用plink启动它。使用plink时,我无法使用su权限启动shell ... sudo或su命令不起作用。在启动时,我不知道它是如何工作的!我的shell程序从ssh一起su -c "sh /storage/sdcard1/start_adb.sh"
使用最后3个命令(不带su-)
谢谢
通过TCP将Android设备与ADB连接有两种方法?
请遵循以下步骤
首先使用以下命令获取您的设备IP地址
adb shell ifconfig
以上命令的输出
wlan0 Link encap:UNSPEC Driver icnss
inet addr:XXX.XXX.X.XX Bcast:XXX.XXX.X.XXX
通过上面的“您帮助”命令,您将找到所连接设备的IP地址
现在使用以下命令
adb tcpip 5555
上面的命令将重新启动此TCP端口:5555
现在使用以下命令连接设备
adb connect XXX.XXX.X.XXX:5555
^^^ ^^^ ^ ^^^
IP Address of device
您可以使用Android Studio插件 Android device with ADB
Android WiFi ADB-IntelliJ / Android Studio插件
创建IntelliJ和Android Studio插件可通过WiFi快速连接您的Android设备,以在不连接USB的情况下安装,运行和调试应用程序。按下一个按钮,忘掉USB电缆
请检查本文以获取更多信息
我在同一问题上的结构,但一个简单的技巧 adb reverse tcp:<PORT> tcp:<PORT>
对我。它允许系统接受tcp请求。
感谢您的阅读
使用adbwireless应用启用电话,然后使用Windows计算机上的adb connect与之通话。手机上的adbwireless应用会告诉您如何连接到它,并提供IP地址和所有内容。
有趣的替代方法是通过USB连接,告诉电话通过adb tcpip 5555使用TCPIP,然后断开USB,然后使用adb connect。这要困难得多,因为这样您就必须自己弄清楚电话的IP地址(adbwireless告诉您IP),必须通过USB连接,并且必须运行adb tcpip(adbwireless也会解决这一问题)。
因此:在手机上安装adbwireless。用它。有可能,我会在Linux和Windows上定期执行此操作。
在我的系统上,它像这样:
在Linux Shell中的Android设备上,一个简单的“ ifconfig”没有提供我的IP地址。我必须输入:
ifconfig eth0
-要么-
netcfg
获取我的IP地址。(我知道eth0已配置,因为我在dmesg中看到了它。)然后我做了:
setprop service.adb.tcp.port -1
停止adbd
启动adbd
然后在我的Win7机器(运行Eclipse 3.7.1的机器)上。我打开命令提示符
\ android-sdk \ platform-tools>
无需以管理员身份运行。然后我做了一个
亚行连接12.345.678.90
我从没放过港口。如果我做了一个
亚行tcpip 5555
它说找不到设备,因此在我的“ adb设备”列表中什么也没出现。即,仅当我不执行上述tcpip命令时,它才有效。
我可以做一个“ adb shell”,并弄乱我的Android设备。但是我的Android设备现在没有出现在“运行”->“运行配置”->“目标”选项卡中。另一方面,如果我将“目标”选项卡设置为自动。然后,当我通过Run-> Run运行我的应用程序时,即使我的Android设备甚至没有被列为我的目标之一,它也可以在我的Android设备上运行。
adb tcpip 5555
。断开USB连接,从中查看电话IPSettings > About Phone > Status
。现在adb connect 192.168.x.x
就是这样。没有工具,没有软件。正常工作。