如何通过 TCP 使用 ADB 连接到 Android?[关闭]

How can I connect to Android with ADB over TCP? [closed]

提问人:JDM 提问时间:4/9/2010 最后编辑:Peter MortensenJDM 更新时间:5/3/2020 访问量:1571773

问:


这个问题似乎与特定的编程问题、软件算法或程序员主要使用的软件工具无关。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释在哪里可以回答该问题。

3年前关闭。

已锁定。这个问题及其答案被锁定,因为这个问题偏离了主题,但具有历史意义。它目前不接受新的答案或交互。

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

我安装了几个不同的 USB-over-TCP 解决方案,但由于 ADB 监视器反复报告“devicemonitor 无法启动监控”,因此连接似乎存在问题。有没有办法使用网络而不是 USB 连接或其他可行的选项直接从开发计算机上的客户端连接到设备上的守护程序?

Android 网络 TCP 调试 adb

评论

75赞 andreszs 2/17/2015
通过 USB 连接时: .断开 USB,从 view 电话 IP。现在,就是这样。没有工具,没有软件。只是工作。adb tcpip 5555Settings > About Phone > Statusadb connect 192.168.x.x
1赞 Jeff Ward 4/30/2015
安德鲁说的 - 这些是谷歌安卓开发者网站的官方说明,不需要root。刚刚在我的无根HTC One m8上工作(当然,需要启用开发人员选项。
0赞 Shivam Aggarwal 12/4/2015
如果 adb 服务在端口 5037 上运行,那么为什么它会定位 5555 到 5585 范围内的设备?
0赞 DaveTheMinion 4/7/2016
@Andrew 我可以使用这样的应用程序在没有计算机的情况下打开和关闭端口吗?我担心当我在公共网络上并且不使用手机进行开发时,将端口 5555 保持打开状态可能会引起安全问题。
0赞 Michael 6/27/2017
@Alex 等等,所以你需要一个USB连接,否则它就不起作用了?我在等待新的 USB 电缆时正在寻找解决方案......

答:

53赞 Nathan 4/9/2010 #1

从:adb --help

connect <host>:<port>         - Connect to a device via TCP/IP

顺便说一句,这是一个命令行选项。

您应该尝试将手机连接到Wi-Fi,然后从路由器获取其IP地址。它不会在蜂窝网络上工作。

端口为 5554。

评论

1赞 JDM 4/10/2010
我曾尝试过使用 5555-5558 和现在的 5554,但由于某种原因它不起作用。基本上从命令行:adb kill-server adb connect 10.10.10.100:5554,结果是 * 守护进程未运行。立即启动 * * 守护程序已成功启动 * 无法连接到 10.10.10.100:5554 我可以从开发工作站 ping 设备的 ip。当输出状态为“守护程序成功启动”时,它不应该是指设备上的守护程序吗?它是否可能尝试使用模拟器?如何确保/验证守护程序是否在设备上运行?谢谢
2赞 Aiden Strydom 3/13/2013
您应该首先通过 USB 进行调试,因为默认设置是通过 USB 进行调试。在后者之后,您可以连接并且它应该可以工作adb tcpip portconnect host:port
0赞 BrainSlugs83 8/9/2013
“adb tcpip port”字面意思?这只返回字符串“错误:找不到设备”——有错别字吗?或者我应该在这里更换一些东西?
3赞 BrainSlugs83 8/9/2013
啊!!想通了,CyanogenMod的默认端口号是5555!好。:D
0赞 BrainSlugs83 9/3/2013
@Michael它可能在某些蜂窝网络上工作,但它们的网络配置基本上是黑匣子——你不知道何时/是否在防火墙后面,端口是否被阻止,NAT转换是否正在进行,等等。
-34赞 JDM 4/18/2010 #2

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

评论

27赞 JDM 3/3/2012
当时,这是唯一的解决方案
30赞 Christoph 8/12/2010 #3

我不知道如何在没有任何 USB 连接的情况下连接设备,但如果您设法在另一台计算机上连接它,您可以通过发出将 adbd 切换到 TCP 模式

adb tcpip <port>

从终端,然后通过以下方式从网络上的任何 PC 通过 wifi 连接到您的设备:

adb connect <ip>:<port>

也许也可以从设备上的终端切换到TCP模式。

评论

0赞 RogerW 9/9/2018
在所有获得大量赞成票的复杂答案中,这个 8 岁的孩子回答了他最简单且有效的答案 无需生根。只需输入“adb connect <ip>:5555”,即可将其部署到。
1204赞 Brian 9/2/2010 #4

手动流程

从您的设备,如果它已植根

根据 xda-developers 上的一篇文章,您可以使用以下命令从设备启用 ADB over Wi-Fi:

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

您可以禁用它并返回 ADB 以在 USB 上收听

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

请务必替换为实际分配给设备的 IP 地址。完成后,您可以通过运行以下命令断开与 adb tcp 会话的连接:192.168.0.101

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需要较少的权限。

评论

3赞 J J 6/11/2011
您需要root访问权限才能执行此操作吗?我似乎能够使用终端运行命令,但它实际上似乎不起作用......
6赞 Kingsolmn 6/12/2011
@ J J - 不幸的是,是的。需要 root。
178赞 Ridcully 2/22/2012
对于第二种解决方案(并且不需要root。adb tcipip 5555adb connect ...
11赞 soulseekah 10/22/2012
adb tcpip <port>仍然需要将任一属性设置为(在模拟器模式下运行)、设置为 0(即 root 设备)或设置为 1。 如果上述任何一项都不满足,则根本不会打开 TCP/IP 连接。请参阅有关变量的 netmite.com/android/mydroid/system/core/adb/adb.c 部分。 在我的无根 2.3.7 Android 上根本没有进入 TCP/IP 模式。ro.kernel.qemuro.securero.debuggableservice.adb.rootadbdadb_mainsecureadbd
2赞 Bron Davies 4/23/2015
所有这些都已在 developer.android.com/tools/help/adb.html#wireless 请确保您也位于同一子网上。196.168.0.* 通常无法访问 196.168.1.* ;)
132赞 norman 9/18/2010 #5

如果您的手机已扎根,这非常简单。

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)

adb 现在应该说您已连接。

注意:如果速度太快而无法发出连接命令,则可能会失败。因此,在你说这不起作用之前,至少尝试两次,间隔五秒钟。

评论

5赞 samus 7/25/2013
以前“adb tcpip 5555” DO “adb kill-server”。“adb connect 192.168.0.101:5555” DO “adb devices” “adb shell” (connect 不启动 shell)。
0赞 Angelina 5/2/2019
我试过了,然后另一个人在他们的电脑上执行了。他可以在我的手机上安装一个应用程序,但他无法远程调试它。是否可以远程调试?在我的手机上,永远有一个对话。adb tcpip 5555adb connect myIP:5555waiting for debugger
0赞 Hritik 7/20/2019
这是否使设置在重新启动后保持不变?
0赞 CaptainFreedom 11/27/2019
这适用于通过移动互联网的 ipv6 地址吗?
9赞 Chris 1/19/2011 #6
adb tcpip 5555

很奇怪,但这只有在我连接了 USB 电缆时才对我有用,然后我可以拔下 USB 并使用其他所有 adb 进行操作。

返回 USB 时也是如此,

adb usb

只有在连接 USB 时才有效。

如果我发出

setprop service.adb.tcp.port 5555

setprop service.adb.tcp.port -1

然后停止并启动adbd,我仍然需要USB电缆,否则它不起作用。

因此,如果我的 ADB over usb 不起作用,我敢打赌我也无法通过 WiFi 启用 ADB。

11赞 offcourse 1/24/2011 #7

正如布莱恩所说:

根据 xda-developers 上的一篇文章,您可以使用以下命令从设备启用 ADB over WiFi

setprop service.adb.tcp.port 5555

停止 adbd

启动 adbd

您可以禁用它并返回 ADB 以在 USB 上收听

setprop service.adb.tcp.port -1

停止 adbd

启动 adbd

如果您已经有 USB 访问权限,则切换到使用 WiFi 会更容易。从通过 USB 连接设备的计算机上的命令行,发出以下命令

亚行 TCPIP 5555

adb 连接 192.168.0.101:5555

告诉 ADB 守护程序返回到通过 USB 侦听

adb usb 接口

Android Market 上也有几个应用程序可以自动执行此过程。

它有效。您只需要访问 android shell 并键入这些命令......

市场上还有另一种(更简单的)解决方案:adbWireless,它会自动设置您的手机。

Root是必需的!对于两者...

评论

2赞 android.weasel 10/28/2012
...但前提是手机已扎根。
0赞 Aiden Strydom 6/19/2013
华硕 Transformer 301 - 无需 root 即可工作
5赞 Ron 2/18/2011 #8

您还可以使用 SSH 本地端口转发。但它仍然涉及 USB 电缆。使用 USB 将手机连接到运行 sshd 的计算机(主机)。在远程(来宾)PC 上,启动能够进行端口转发/隧道的 SSH 客户端。例:

plink -L 5037:localhost:5037 <host_IP_address>

我使用此结构将我的设备连接到虚拟机。Eltima USB转以太网不够稳定(调试期间超时)。

SSH 隧道免费工作,更可靠。

1赞 lee 6/11/2011 #9

我确实做到了这一点。没有使用任何USB电缆。

  • 应用程序 adb 无线。
  • 运行它。这将设置 ip 和 port;然后在dos中

    cd C:\Program Files\Android\android-sdk\platform-tools adb connect "192.168.2.22:8000 "enter"
    

连接。

1赞 ConcernedParty 7/23/2011 #10

使用 adbwireless 应用程序启用手机,然后从 Windows 计算机使用 adb connect 与其通话。手机上的 adbwireless 应用程序会告诉您如何连接到它,并提供 IP 地址和所有内容。

不太有趣的选择是通过 USB 连接,通过 adb tcpip 5555 告诉手机使用 tcip,然后断开 USB,然后使用 adb connect。这要困难得多,因为这样你必须自己找出手机的IP地址(adbwireless告诉你IP),你必须通过USB连接,你必须运行adb tcpip(adbwireless也会处理这个问题)。

所以:在手机上安装adbwireless。使用它。这是可能的,我经常在 Linux 和 Windows 上这样做。

33赞 transistor1 10/15/2011 #11

我需要让 USB 和 TCPIP ADB 工作(不要问),所以我做了以下操作(使用其他人从 xda-developers 发布的说明)

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

评论

0赞 KrisWebDev 8/18/2013
不起作用:找不到 adbd。adbd 通常通过 start adbd 启动。但也许某个文件夹中有一个脚本/可执行文件?
1赞 transistor1 8/18/2013
在我的 gnex 上,它是 .这可能因电话而异。当然,你必须扎根......如果您没有 root 权限,您将无法访问 /sbin。/sbin/adbd
1赞 Joe C 12/23/2011 #12

在我的系统上,它是这样的:

在我的 Linux shell 中的 Android 设备上,一个简单的“ifconfig”没有给我 IP 地址。我不得不输入:

ifconfig eth0

-或-

网CFG

获取我的 IP 地址。(我知道 eth0 是配置的,因为我在我的 dmesg 中看到了它。然后我做了:

setprop service.adb.tcp.port -1

停止 adbd

启动 adbd

然后在我的 Win7 机器(运行 Eclipse 3.7.1 的机器)上。我打开了命令提示符

\android-sdk\platform-tools>

无需以管理员身份运行。然后我做了一个

adb 连接 12.345.678.90

我从来没有放过端口。如果我做了一个

亚行 TCPIP 5555

它说它找不到该设备,然后我的“adb 设备”列表中没有出现任何内容。即,它仅在我不执行上面的 tcpip 命令时才有效。

我可以做一个“adb shell”并弄乱我的Android设备。但是我的Android设备现在没有出现在我的“运行->运行配置->目标”选项卡中。另一方面,如果我将“目标选项卡”设置为“自动”。然后,当我通过 Run->Run 运行我的应用程序时,它确实在我的 Android 设备上运行,即使我的 Android 设备甚至没有被列为我的目标之一。

8赞 errordeveloper 7/15/2012 #13

要仅使用一个命令在 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 来启用或禁用对端口 5555 的侦听。运行以检查它是否正在侦听。如您所见,如果您确实希望手动更改,它也会触发。service.adb.tcp.enablenetstatservice.adb.tcp.port

4赞 user146043 7/17/2012 #14

我发现其他答案令人困惑。adbWireless 的使用要简单得多:

http://ppareit.github.com/AdbConnect/

只需在手机上安装一个应用程序,即可通过 wifi 切换调试,安装一个 eclipse 插件,即可完成。

评论

0赞 ArtOfWarfare 10/5/2012
你指的是什么eclipse插件?编辑:没关系。通过点击答案中的链接找到它。
0赞 Zoe is on strike 8/18/2017
不过这只是根
3赞 Felizk 1/5/2013 #15

我整理了一个批处理文件,用于通过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
32赞 Rinkesh 1/29/2013 #16

使用 TCP 端口连接平板电脑。 确保您的系统和设备连接到同一网络。

  1. 打开控制台 cmd.exe
  2. 类型adb tcpip 5555
  3. 转到系统 -> 开发选项 -> USB调试 --> 取消选中TCPIP连接
  4. 键入这是您的设备 IP 地址adb connect 192.168.1.2
  5. 连接到 192.168.1.2

使用端口转发进行连接尝试做端口转发,

adb 正向 tcp: tcp:<PC port><device port>

喜欢:

adb forward tcp:5555 tcp:5555。

C:\Users\abc>adb 转发 tcp:7612 tcp:7612

C:\Users\abc>adb tcpip 7612 在 TCP 模式下重新启动端口:7612

C:\Users\abc>adb 连接 10.0.0.1:7612

连接到 10.0.0.1:7612

如果您收到消息错误:找不到设备,请将 USB 设备连接到系统,然后按照相同的步骤操作。
对于已取得 root 权限的设备

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

评论

2赞 Grim 8/2/2014
在控制台中,首先写入以获取 root-console。su
61赞 MapleLover 4/15/2013 #17

假设您已将 adb 路径保存到 Windows 环境路径中

  1. 在 Android 中激活调试模式

  2. 通过USB连接到PC

  3. 打开命令提示符类型:adb tcpip 5555

  4. 断开平板电脑或智能手机与电脑的连接

  5. 打开命令提示符类型:(IPADDRESS 是平板电脑或智能手机的 DHCP/IP 地址,您可以通过 Wi-Fi 找到该地址 - >当前连接的网络)adb connect IPADDRESS

现在在命令提示符下,您应该看到如下结果:已连接到 xxx.xxx.xxx.xxx:5555

评论

0赞 Manju 10/26/2019
感谢您的步骤顺序,并确切地提到了何时断开PC连接。
1赞 Avinash M 1/31/2014 #18

我只是按照以下步骤操作,它开始工作,这样我就可以连接到我的Android设备。

步骤1:在Android设备中打开终端窗口并执行以下命令。

  1. su -- 切换到超级用户。
  2. setprop service.adb.tcp.port 5555 - 指定 tcp 端口 - 5555 是此处的端口号
  3. stop adbd - 停止 adbb 服务。
  4. start adbd - 启动 adbd 服务。

第 2 步:通过 ADB,执行以下命令。(从配置ADB的路径)

adb connect 10.10.10.50:5555 - 这里 10.10.10.50 是 android 设备的 IP 地址,5555 是端口号。

3赞 Wernight 11/10/2014 #19

以下是 Brian 使用蓝牙回答的扩展:

  1. 在 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
    
  2. 将蓝牙网络用于 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

注意:蓝牙 3.0 和 4.0 最高可达 24 Mbit/s

3赞 beguinner 1/6/2015 #20

步骤:

  1. su-- 切换到超级用户。
  2. setprop service.adb.tcp.port 5555- 指定 tcp 端口 - 此处的端口号为 5555
  3. stop adbd- 停止 adbd 服务。
  4. start adbd- 启动 adbd 服务。

这与我的 Windows PC 完美配合ssh

我尝试在我的 cyanogen 手机上启动时执行此操作或使用 plink 启动它。使用 plink 我无法使用 su 启动 shell,对吧......sudo 或 su 命令不起作用。在启动时,我不知道它是如何工作的! 我的 shell 程序使用 ssh 与最后 3 个命令(没有 su --)一起工作su -c "sh /storage/sdcard1/start_adb.sh"

谢谢

94赞 Ribin Haridas 1/22/2015 #21
  1. 通过 USB 连接设备并确保调试正常工作,然后运行:

    adb tcpip 5555
    adb connect <DEVICE_IP_ADDRESS>:5555
    
  2. 断开 USB 并继续无线调试。

  3. 完成后,想要切换回USB调试时,请运行:

    adb -s <DEVICE_IP_ADDRESS>:5555
    

要查找设备的 IP 地址,请转到 在您的设备上或运行 。Settings > Wi-Fi > Advanced > IP Addressadb shell netcfg

无需root。一次只能调试一个设备。

请参阅此XDA帖子

该命令位于 Android SDK 的文件夹中。adbplatform-tools

评论

2赞 andreszs 2/17/2015
实际上,如果您遵循正确的顺序,您可以一次连接许多设备。只需将每部手机的 tcpip 分别设置为 5555,然后为每部手机发出 connect 命令,瞧,它们都连接到了 adb。
0赞 Aron Lorincz 7/21/2015
如果我的手机以这种方式连接,调试速度会慢一些。此外,有时它会睡着,这会导致立即断开连接。
0赞 vhamon 7/24/2018
在某些设备上,adb tcpip 命令和 adb connect 命令之间的延迟必须非常低,否则将不起作用。此外,对我来说,它通过做adb tcpip 5555 && adb connect <DEVICE_IP_ADDRESS>:5555
1赞 Abdul Saleem 9/8/2015 #22

我找到了一种方便的方法,我想分享。

对于 Windows

拥有一次 USB 访问权限

无需root

将手机和电脑连接到热点,或从手机运行便携式热点并将电脑连接到热点。

按照布莱恩的规定获取手机的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

将上面给出的位置更改为您的 PC 包含 abd.exe 文件的位置

将 ip 更改为您的手机 ip。

注意:上面给出的IP是android设备在制作热点时的基本IP。如果您要连接到 wifi 网络,并且您设备的 IP 在每次连接到热点时都在不断变化,您可以通过在 wifi 设置中进行配置来使其静态。用谷歌搜索一下。

现在将文件另存为ABD_Connect.bat(MS-DOS 批处理文件)。

将其保存在某个位置,然后引用“桌面”或“开始”按钮的快捷方式。

通过 USB 连接一次,然后尝试运行一些应用程序。之后,每当您想无线连接时,双击快捷方式。

注意:有时每次调试应用程序时都需要打开快捷方式。因此,在桌面上为快捷方式制作快捷键会更方便。我做了一个快捷键,比如.因此,每当我想调试时,我都会按 和Ctrl+Alt+SShift+F9Ctrl+Alt+S

注意:如果您在cmd窗口中发现device=null错误,请检查您的IP,它可能已更改。

21赞 Pedro Vicente Gómez Sánchez 10/21/2015 #23

如果您想轻松连接设备以通过 WiFi 运行、调试或部署您的 Android 应用程序,您可以使用我开发的开源 IntelliJ 插件。这是代码,这里是可供使用的插件。

用法非常简单。这里有一个 gif:

enter image description here

评论

0赞 rostamiani 10/21/2015
出现此错误:“'adb'command not found.查看 Android SDK 安装。
1赞 Pedro Vicente Gómez Sánchez 10/22/2015
您必须声明一个名称为 ANDROID_HOME 的环境变量。但是我有一个待审查的 PR 以避免这种情况。在我将于下周发布的 1.2 版中,该插件将只适用于安装了 IntelliJ :)
0赞 powder366 10/28/2015
我使用 mac,在 AS 中没有看到图标?我需要先做一些手动操作吗?
1赞 Pedro Vicente Gómez Sánchez 11/3/2015
我已经发布了一个新版本,其中不再需要ANDROID_HOME环境变量。@powder366您需要从 IntelliJ 插件商店手动安装插件。安装和使用插件所需的所有说明都在项目自述文件中,请查看 github.com/pedrovgs/AndroidWiFiADB
0赞 powder366 11/3/2015
@PedroVicenteGómezSánchez谢谢。我选错了插件,还有另一个名称相似的插件......
45赞 Raghav Thakkar 10/26/2015 #24

对于Windows用户:

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

步骤2:

打开 cmd 并键入 adb。
如果发现 adb is not valid 命令,则必须添加环境变量的路径。

•首先进入你的SDK安装文件夹
按照此路径,此路径仅供参考。 D:\softwares\Development\Andoird\SDK\sdk\platform-tools\; D:\softwares\Development\Andoird\SDK\sdk\tools;
•现在在Windows系统高级设置上搜索

enter image description here

打开 Environment 变量。

enter image description here

然后打开路径并粘贴以下路径 这是一个示例。
您的SDK路径与我的不同,请使用您的SDK。D:\softwares\Development\Andoird\SDK\sdk\platform-tools\;
D:\softwares\Development\Andoird\SDK\sdk\tools;

enter image description here

步骤3:

打开 cmd 并键入 adb。如果您仍然看到 adb is not valid 命令,则您的路径未正确设置,请按照上述步骤操作。

enter image description here

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

打开 cmd 并键入 adb devices,您可以看到您的设备。找到您的手机 IP 地址。

enter image description here

类型:- adb tcpip 5555

enter image description here

获取手机的 IP 地址

adb shell netcfg

现在

adb connect "IP address of your phone"

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

enter image description here

enter image description here

对于 Linux 和 macOS 用户

第 1 步:打开终端并使用

sudo apt-get 安装 android-tools-adb android-tools-fastboot

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

adb tcpip 5555

使用 adb 连接您的 Android 手机 IP 地址。

取下手机。

1赞 9re 11/20/2015 #25

adb 可以通过 tcp 套接字与 adb server 进行通信。 您可以通过 Telnet 进行验证。

$ telnet 127.0.0.1 5037
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
000chost:version
OKAY00040020

通常,命令的格式如下 ruby 命令 witch 针对 tcp 套接字发送 adb 命令%04x%s with <message.length><msg>cmdsocket

def send_to_adb(socket, cmd)
  socket.printf("%04x%s", cmd.length, cmd)
end

第一个示例发送长度为 12(十六进制)的命令。 您可以享受更令人兴奋的命令,例如从FrameBuffer中截取屏幕截图,因为您可以从其名称中猜到。host:version000cframebuffer:

评论

0赞 Ian Ni-Lewis 1/19/2016
这是很酷的信息,但它并没有解决这个问题。adb 服务器是主机端的,问题是询问如何与设备进行无线通信。(adb 服务器存在的原因是通过单个主机到设备传输(通常是 USB 端点)多路复用 adb 主机会话。
7赞 Eddy 3/11/2016 #26

步骤 1。

确保您的 adb 主机和 Android 设备都在同一个 Wifi 网络上。

第2步。

使用 USB 数据线将 Android 设备与计算机连接。执行此操作后,您的主机将检测到您的设备,并且 adb 将开始在计算机上以 USB 模式运行。您可以通过执行 来检查连接的设备,而确保 adb 在 USB 模式下运行。adb devicesadb usb

$ adb usb
restarting in USB mode
$ adb devices
List of devices attached
ZX1D63HX9R  device


第 3 步。

使用以下命令在 tcpip 模式下重新启动 adb:

$ adb tcpip 5556
restarting in TCP mode port: 5556


第 4 步。

找出 Android 设备的 IP 地址。有几种方法可以做到这一点:

  • 方式: 1 转到设置 -> 关于手机/平板电脑 ->状态 -> IP 地址。
  • 方式: 2 转到可用的 Wi-Fi 网络列表。您连接到的那个,点击它并了解您的IP。
  • 方式: 3 尝试 .$ 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


第 5 步。

拔下 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服务器,然后再次完成所有步骤。adb kill-server

希望对您有所帮助!


参考:

评论

0赞 ahsan.dev 4/13/2016
此外,您可以在 Unix 上使用以下脚本获取设备的 IP:adb shell ip -f inet addr show wlan0 |grep inet |echo -n $(grep -Eo '[0-9\.\/]') |echo -n $(grep -Eo '^[^\/]*') |sed 's/ //g'
0赞 iSrinivasan27 4/25/2016
@Eddy 一个疑问是系统和手机/平板电脑都必须通过WiFi连接,或者通过LAN连接的系统和平板电脑使用同一网络的WIFi路由器连接。请澄清一下
0赞 Eddy 4/26/2016
@i-Droid 我不知道为什么两者都必须连接到同一个网络中。也许ADB使用特殊的网络路由协议。我对此一无所知,也没有深入研究。如果您对此感兴趣,欢迎澄清并分享给我,谢谢!
2赞 TuomasG 3/31/2016 #27

另外一点(从艰难的经历中学到的):您不应该同时激活公司的 VPN 连接......

2赞 noman404 5/26/2016 #28

您需要做以下事情:

  • 首先,将 ADB 添加到您的环境路径。
  • 在 CLI 中,键入以下命令 adb connect YOUR_DEVICE_IP:PORT_NUMBER(例如:adb connect 192.168.100.100:5555 )
29赞 Thiago 6/7/2016 #29

首先,您必须通过USB连接设备

然后将您的设备连接到 WIFI 并获取 IP 地址。 虽然仍然通过 usb 连接,但在命令行或通过 Android Studio 终端键入此命令

adb tcpip 5555
adb connect <device IP>:5555

您将看到以下消息:

restarting in TCP mode port: 5555
connected to 172.11.0.16:5555

现在拔下 USB 电缆,您仍然会像往常一样看到您的 logcat

做。享受

评论

0赞 Tim Scott 8/29/2016
这奏效了。然而。执行这些步骤后,我无法再切换回模拟器。建议?
0赞 Thiago 8/30/2016
您需要使用以下命令重新启动 adb:<adb kill-server>,然后<adb start-server>
1赞 Abdul Wasae 5/15/2017 #30

如果您希望能够在按钮上执行此操作,请单击:

  1. 在 Android Studio 中,>设置/首选项 ->插件 ->浏览代码库
  2. 搜索“ADB wifi”
  3. 安装并重启 android studio
  4. 使用USB将设备(启用USB调试)连接到计算机(每个会话只需执行此操作一次)
  5. 工具 -> Android -> ADB WIFI -> ADB USB TO WIFI(或使用提到的组合键。对于 MacOS:ctrl + shift + w)

注意:如果它不起作用:

  1. 您的 wifi 路由器防火墙可能阻止了连接。
  2. 您的计算机上可能未安装 ABD。
35赞 Zoe is on strike 6/9/2017 #31

从非 root 设备上的计算机

(请注意,这也可以使用有根设备来完成,但您可以在不需要 USB 连接的有根设备上使用 shell)

首先,打开命令提示符(CMD)。如果您使用 Android Studio 或 IntelliJ,则可以使用其中包含一个控制台。

如果您已将 adb 添加到路径中,则可以跳过 cd 部分。


如果可能,请打开 SDK 位置,右键单击,然后按“在此处启动命令提示符”。并非所有人都有此选项,因此您还必须执行以下 (/these) 命令:

Windows:更改驱动器(如果适用)

D: 

并访问 sdk 和平台工具。将此路径替换为 SDK 位置:

cd /sdk/path/here/platform-tools

现在,您可以访问 Android 调试桥。


将设备连接到计算机后,执行以下操作:

adb tcpip <port> 
adb connect <ip>:<port>

要连接到的端口在哪里(默认为 ),并且是要连接到的设备的 IP。<port>5555<ip>

请注意:是默认端口,只需写入 IP 地址即可连接它。如果您使用自定义端口,您至少可以稍微提高安全性。通过Wi-Fi进行USB调试可能会被滥用,但前提是设备连接到想要滥用设备的计算机。使用非默认端口至少会使连接变得有点困难。5555

如果使用自定义端口,请确保将其添加到 IP 之后。写入没有端口连接到,如果不使用该端口,连接将失败。5555

您可以通过两种方式查找设备的 IP 地址:

  • 根据您的设备,确切的名称可能会有所不同。打开设置并转到关于设备 -> 状态 -> IP 地址

  • 使用 ADB 获取 IP

在控制台中,执行以下操作:

adb shell ip -f inet addr show wlan0

完成连接后,您可以通过以下方式断开设备与计算机的连接:

adb disconnect <ip>:<port>

或者没有 IP 来断开所有设备的连接。如果使用了自定义端口,则必须指定要断开连接的端口。此处的默认值也是 5555。

要禁用端口(如果要执行此操作),请在连接设备的情况下执行以下命令:

adb usb

或者,您可以重新启动设备以删除 tcpip 连接

从已取得 root 权限的设备上的计算机

首先,您需要访问 shell。您可以使用 USB 数据线连接设备,然后使用 Google Play、FDroid 或其他来源或下载应用程序。adb shell

然后你做:

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 连接)。

某些手机在开发者选项中有一个设置(这适用于一些无根手机,尽管可能也有一些有根手机),允许从设备本身通过Wi-Fi切换ADB,而无需root或计算机连接来启动它。虽然很少有手机有这个功能

评论

0赞 Michael 6/27/2017
adb shell ip -f inet addr show wlan0IP 地址和端口支持是否要在某个位置替换?
0赞 Zoe is on strike 7/25/2017
不在那条线上。这是获取 IP 的 shell 方式。该行中的任何内容都不应被替换
8赞 eleven 10/16/2018 #32

Bash util 函数:

function adb-connect-to-wifi {
    ip="$(adb shell ip route | awk '{print $9}')"
    port=5555
    adb tcpip ${port}
    adb connect ${ip}:${port}
}
2赞 AskNilesh 10/11/2019 #33

有两种方法可以将您的Android设备与ADB通过TCP连接?

第一种方式

请按照下列步骤操作

首先使用以下命令获取设备 IP 地址

adb shell ifconfig

上述命令的 OUTPUT

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 数据线

请查看此文章以获取更多信息

在Android Studio中将Android设备与Wifi连接

1赞 Mark G 11/7/2019 #34

为了以防万一它对任何人有帮助,我写了一个 .bat 文件来为我完成这项工作。

我正在使用 Visual Studio / Xamarin - 只需将手机连接到 USB,运行批处理文件,选择“C”进行连接,完成后,断开手机与 USB 电缆的连接。您将从那里通过Wifi连接。

注意:将脚本中的目录更改为 PC 上存在 adb.exe 的任何位置,并编辑手机的 IP 地址。

@echo off
cls
c:
cd\
cd C:\Program Files (x86)\Android\android-sdk\platform-tools\

:choice
set /P c=Do you want to connect or disconnect[C/D]?
if /I "%c%" EQU "C" goto :connect
if /I "%c%" EQU "D" goto :disconnect
goto :choice


:connect
echo plug phone in via USB. Make sure emulator is switched off
pause
adb tcpip 5555
adb connect 192.168.0.32:5555
echo finished - unplug USB
pause
exit

:disconnect
adb usb
echo finished - ADB is reset to USB mode
pause

希望它对某人有所帮助!

2赞 Radha Manohar 1/9/2020 #35

我在同一个问题上有结构,但是 一个简单的技巧对我有用。它允许系统接受 tcp 请求。adb reverse tcp:<PORT> tcp:<PORT>

感谢您的阅读

6赞 Tom Taylor 2/15/2020 #36

这些是我遵循的步骤,它对我有用,

  1. adb shell ifconfig(从此处获取设备的 IP 地址)

  2. adb tcpip 7777(将 adb 连接到某个端口)

  3. adb 连接“ipaddress”:7777

0赞 Tatsuya Fujisaki 5/3/2020 #37

这是 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