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

Posted

技术标签:

【中文标题】如何通过 TCP 使用 ADB 连接到 Android? [关闭]【英文标题】:How can I connect to Android with ADB over TCP? [closed] 【发布时间】:2011-02-05 23:28:36 【问题描述】:

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

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

【问题讨论】:

通过 USB 连接时:adb tcpip 5555。断开USB,查看Settings > About Phone > Status的电话IP。现在adb connect 192.168.x.x 就是这样。没有工具,没有软件。只是工作。 安德鲁所说的——这些是来自谷歌android developer website的官方说明,不需要root。刚刚在我的非 root HTC One m8 上工作(当然需要启用开发人员选项。)。 如果 adb 服务在 5037 端口运行,那么为什么它会定位 5555 到 5585 范围内的设备? @Andrew 我可以使用this 之类的应用程序在没有root 访问权限的Nexus 6 上打开和关闭端口吗?当我在公共网络上并且不使用手机进行开发时,我担心打开端口 5555 可能会引起安全问题。 2 methods - how to run android app over wifi - Simple tutorial 【参考方案1】:

来自adb --help

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

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

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

端口是5554。

【讨论】:

我曾用 5555-5558 和现在的 5554 尝试过,但由于某种原因它不起作用。基本上从命令行: adb kill-server adb connect 10.10.10.100:5554 结果是 * daemon not running。现在开始 * * 守护进程已成功启动 * 无法连接到 10.10.10.100:5554 我可以从开发工作站 ping 设备的 IP。当输出状态“守护程序成功启动”时,它不应该指的是设备上的守护程序吗?它是否可能尝试使用模拟器?如何确保/验证守护程序正在设备上运行?谢谢 你应该首先adb tcpip port 因为默认是通过usb调试。在后者之后,您可以连接connect host:port,它应该可以工作 "adb tcpip port" 字面意思?只返回字符串“错误:找不到设备”——有错字吗?还是我应该在这里替换一些东西? 啊啊啊!!想通了,CyanogenMod 的默认端口号是 5555!好的。 :D @Michael 它可能适用于某些蜂窝网络,但它们的网络配置基本上是黑匣子——您不知道何时/是否在防火墙后面,端口是否被阻止,如果正在进行 NAT 转换等【参考方案2】:

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

【讨论】:

当时是唯一的解决方案【参考方案3】:

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

adb tcpip <port>

从终端并通过 wifi 从网络上的任何 PC 连接到您的设备:

adb connect <ip>:<port>

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

【讨论】:

在收到大量赞成票的所有复杂答案中,这位 8 岁的孩子回答了他最简单且有效的答案,无需生根。只需输入 'adb connect :5555' 即可部署到。【参考方案4】:

手动流程

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

根据a post on xda-developers,您可以使用以下命令从设备通过 Wi-Fi 启用 ADB:

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

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

adb disconnect 192.168.0.101:5555

您可以通过两种方式找到平板电脑的 IP 地址:

手动 IP 发现:

进入 Android 的 WiFi 设置,点击操作栏中的菜单按钮(垂直省略号),点击 Advanced 并在屏幕底部查看 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 需要的权限较少。

【讨论】:

您是否需要 root 访问权限才能执行此操作?我似乎可以使用终端运行命令,但实际上似乎不起作用... @J J - 不幸的是,是的。需要根。 对于第二种解决方案(adb tcipip 5555adb connect ... 不需要 root。 adb tcpip &lt;port&gt; 仍然需要设置 ro.kernel.qemu 属性(在模拟器模式下运行),ro.secure 为 0(即有根设备),或 ro.debuggableservice.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 模式。 太棒了!第二个解决方案真的不需要root!【参考方案5】:

如果您的手机已root,这真的很简单。

从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 秒。

【讨论】:

这个答案对我来说更好,因为它解释了应该在设备上执行哪些部分以及在计算机上执行哪些部分。 之前“adb tcpip 5555”“adb kill-server”。 AFTER "adb connect 192.168.0.101:5555" DO "adb devices" OR "adb shell"(连接不启动 shell)。 我尝试了adb tcpip 5555,然后另一个人在他们的电脑上执行了adb connect myIP:5555。他可以在我的手机上安装一个应用程序,但他无法远程调试它。可以远程调试吗?在我的手机上有一个对话waiting for debuggerforever。 这会使设置在重启后保持不变吗? 这是否适用于通过移动互联网的 ipv6 地址?【参考方案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 无法正常工作,我敢打赌我也无法启用 ADB over WiFi。

【讨论】:

【参考方案7】:

正如布赖恩所说:

根据 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 连接 192.168.0.101:5555

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

adb usb

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

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

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

需要root!对于两者...

【讨论】:

...但前提是手机已root。 Asus Transformer 301 - 无需 root 即可工作【参考方案8】:

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

plink -L 5037:localhost:5037 <host_IP_address>

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

SSH 隧道是免费的,而且更可靠。

【讨论】:

【参考方案9】:

我确实得到了这个工作。没有使用任何 USB 数据线。

应用 adb 无线。

运行它。这将设置 ip 和端口;然后在dos中

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

已连接。

【讨论】:

【参考方案10】:

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

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

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

【讨论】:

【参考方案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

【讨论】:

不起作用:找不到 adbd。 adbd 通常通过 start adbd 启动。但也许某个文件夹中有一个脚本/可执行文件? 在我的 gnex 上,它是 /sbin/adbd。这可能因电话而异。当然,你必须是root...如果你没有root,你将无法访问/sbin。【参考方案12】:

在我的系统上是这样的:

在我的 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>

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

adb 连接 12.345.678.90

我从不放置端口。如果我做了一个

adb tcpip 5555

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

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

【讨论】:

【参考方案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

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

【讨论】:

【参考方案14】:

我发现其他答案令人困惑。使用 adbWireless 更简单:

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

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

【讨论】:

你指的是什么eclipse插件?编辑:没关系。按照您答案中的链接找到它。 虽然这只是根目录【参考方案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

【讨论】:

【参考方案16】:

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

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

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

adb forward tcp:&lt;PC port&gt;tcp:&lt;device port&gt;

喜欢:

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 连接 10.0.0.1:7612

连接到 10.0.0.1:7612

如果您收到消息 error: device not found 将 USB 设备连接到系统,然后按照相同的步骤操作。 对于有根设备

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

【讨论】:

在控制台中先写su 以获得一个rooted-console。【参考方案17】:

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

    在 Android 中激活调试模式

    通过 USB 连接到 PC

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

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

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

现在在命令提示符下,您应该会看到如下结果:connected to xxx.xxx.xxx.xxx:5555

【讨论】:

感谢您提供一系列步骤并准确提及何时断开 PC。【参考方案18】:

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

第一步:在安卓设备中打开终端窗口,执行以下命令。

    su -- 切换到超级用户。 setprop service.adb.tcp.port 5555 - 指定 tcp 端口 - 5555 是这里的端口号 stop adbd - 停止 adbb 服务。 启动 adbd - 启动 adbd 服务。

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

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

【讨论】:

【参考方案19】:

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

注意:Bluetooth 3.0 and 4.0 can go up to 24 Mbit/s.

【讨论】:

【参考方案20】:

步骤:

    su -- 切换到超级用户。 setprop service.adb.tcp.port 5555 - 指定 tcp 端口 - 5555 是这里的端口号 stop adbd - 停止 adbd 服务。 start adbd - 启动 adbd 服务。

这与我的 Windows PC 中的 ssh 完美配合

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

谢谢

【讨论】:

【参考方案21】:

    通过 USB 连接设备并确保调试正常,然后运行:

    adb tcpip 5555
    adb connect <DEVICE_IP_ADDRESS>:5555
    

    断开 USB 并继续进行无线调试。

    当您完成并想要切换回 USB 调试时,运行:

    adb -s <DEVICE_IP_ADDRESS>:5555
    

要查找您设备的 IP 地址,请转到您设备上的Settings &gt; Wi-Fi &gt; Advanced &gt; IP Address 或运行adb shell netcfg

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

见this XDA post。

adb 命令位于 Android SDK 的 platform-tools 文件夹中。

【讨论】:

实际上,如果您遵循正确的顺序,您可以一次连接多个设备。只需为每部手机单独设置 tcpip 为 5555,然后为每部手机发出连接命令,瞧,它们都连接到 adb。 如果我的手机以这种方式连接,调试会慢一些。此外,有时它会睡着并导致立即断开连接。 在某些设备上,adb tcpip 命令和 adb connect 命令之间的延迟必须非常低,否则它不起作用。另外,对我来说,它通过adb tcpip 5555 &amp;&amp; adb connect &lt;DEVICE_IP_ADDRESS&gt;:5555【参考方案22】:

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

适用于 Windows

拥有一次 USB 访问权限

无需root

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

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

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

将 ip 更改为您的手机 ip。

注意:上面给出的IP是安卓设备做热点时的基础IP。如果您正在连接 wifi 网络,并且您的设备的 IP 在每次连接到热点时都在不断变化,您可以通过在 wifi 设置中进行配置将其设为静态。谷歌一下。

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

将其保存在某处并引用桌面或开始按钮的快捷方式。

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

注意:有时您需要在每次调试应用程序时打开快捷方式。所以为桌面的快捷方式制作一个快捷键会更方便。我制作了一个快捷键,例如Ctrl+Alt+S。所以每当我想调试时,我都会按Shift+F9Ctrl+Alt+S

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

【讨论】:

【参考方案23】:

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

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

【讨论】:

发生此错误:“'adb'command not found. 检查您的 Android SDK 安装。 您必须声明一个名为 ANDROID_HOME 的环境变量。但我有一个 PR 待审核以避免这种情况。对于我将在下周发布的 1.2 版,该插件将仅在安装 IntelliJ 的情况下工作:) 我用的是mac,在AS中看不到图标吗?我需要先手动做一些事情吗? 我已经发布了一个不再需要 ANDROID_HOME 环境变量的新版本。 @powder366 您需要从 IntelliJ 插件商店手动安装插件。安装和使用插件所需的所有说明都在项目自述文件中,看一下github.com/pedrovgs/AndroidWiFiADB @PedroVicenteGómezSánchez 谢谢。我选错了插件,还有另一个同名的插件...【参考方案24】:

对于 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;

第 3 步:

打开 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 connect 您手机的 IP 地址

适用于 Linux 和 macOS 用户

第一步:打开终端并使用安装 adb

sudo apt-get install android-tools-adb android-tools-fastboot

通过 USB 数据线将您的手机连接到 PC。 在终端输入以下命令

adb tcpip 5555

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

取出你的手机。

【讨论】:

【参考方案25】:

adb 可以通过 tcp 套接字与 adb 服务器通信。 您可以通过 telnet 验证这一点。

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

通常,命令的格式为%04x%s with &lt;message.length&gt;&lt;msg&gt; 以下是 ruby​​ 命令女巫向 tcp 套接字 socket 发送 adb 命令 cmd

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

第一个示例发送命令host:version,长度为12(000c,十六进制)。 您可以享受更多令人兴奋的命令,例如framebuffer:,它从帧缓冲区中截取屏幕截图,您可以从它的名称中猜到。

【讨论】:

这是很酷的信息,但它没有解决问题。 adb 服务器是主机端的,问题是如何与设备进行无线通信。 (存在 adb 服务器的原因是通过单个主机到设备传输多路复用 adb 主机会话,通常是 USB 端点。)【参考方案26】:

第 1 步。

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

第 2 步。

使用 USB 数据线将 Android 设备与计算机连接。一旦你这样做,你的主机将检测到你的设备,adb 将开始在计算机上以 USB 模式运行。您可以使用adb devices 检查连接的设备,同时通过执行adb usb 确保 adb 在 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 kill-server 来终止您的 adb 服务器,然后再次执行所有步骤。

希望对您有所帮助! 参考:

http://developer.android.com/tools/help/adb.html#wireless http://codetheory.in/android-debug-bridge-adb-wireless-debugging-over-wi-fi/

【讨论】:

此外,您可以在 Unix 上使用此脚本获取设备的 IP: adb shell ip -f inet addr show wlan0 | grep inet | echo -n $(grep -Eo '[0-9\.\/]') |回声 -n $(grep -Eo '^[^\/]*') | sed 's/ //g' @Eddy 有人怀疑系统和手机/平板电脑都必须通过 WiFi 连接,否则系统通过 LAN 连接,平板电脑使用同一网络的 WIFI 路由器连接。请澄清一下 @i-Droid 我不知道为什么两者都必须连接在同一个网络中。也许 ADB 使用特殊的网络路由协议。我对此一无所知,也没有深入研究。如果您对此感兴趣,欢迎澄清并分享给我,谢谢!【参考方案27】:

另外一个注意事项(艰难地学会了):您不应该同时激活您的公司 *** 连接...

【讨论】:

【参考方案28】:

你需要做以下事情:

首先,将 ADB 添加到您的环境路径中。 在您的 CLI 中键入此命令 adb connect YOUR_DEVICE_IP:PORT_NUMBER(例如 adb connect 192.168.100.100:5555

【讨论】:

【参考方案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

完成。享受

【讨论】:

这行得通。然而。执行这些步骤后,我无法再切换回模拟器。有什么建议吗? 你需要重启你的 adb: 然后【参考方案30】:

如果您希望能够通过单击按钮来执行此操作,那么:

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

注意:如果它不起作用:

    您的 wifi 路由器防火墙可能会阻止连接。 您的计算机上可能未安装 ABD。

【讨论】:

以上是关于如何通过 TCP 使用 ADB 连接到 Android? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不先将设备连接到计算机的情况下通过 Wifi 执行“adb logcat”? [复制]

如何通过 WiFi 使用 adb? [复制]

无法在家庭 WLAN 中通过 wifi 连接 ADB

如何使用 Perl 通过 TCP 和 UDP 连接到远程机器?

无法通过 ADB 连接到 Chromebook 进行调试

ADB使用WIFI连接Android设备