adb 的工作原理
当启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。
然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护程序 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:
模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推
如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
服务器与所有设备均建立连接后,便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此可以从任意客户端(或从某个脚本)控制任意设备。
通过 Wi-Fi 连接到设备(Android 11 及更高版本)
Android 11 及更高版本支持使用 Android 调试桥 (adb) 从工作站以无线方式部署和调试应用。例如,可以将可调试应用部署到多台远程设备,而无需通过 USB 实际连接设备。这样就可以避免常见的 USB 连接问题,例如驱动程序安装方面的问题。
如需使用无线调试,需要使用配对码将您的设备与工作站配对。host pc和设备必须连接到同一无线网络。请按以下步骤操作:
图 1. 无线 ADB 配对对话框。
- 在host pc上,更新到最新版本的 SDK 平台工具。
- 在设备上启用开发者选项。
- 启用无线调试选项。
- 在询问要允许在此网络上进行无线调试吗?的对话框中,点击允许。
- 选择使用配对码配对设备。记下设备上显示的配对码、IP 地址和端口号(参见图片)。
- 在工作站上,打开一个终端。
- 运行
adb pair ipaddr:port
。 使用第 5 步中的 IP 地址和端口号。 - 当系统提示时,输入在第 5 步中获得的配对码。系统会显示一条消息,表明我们的设备已成功配对。
none Enter pairing code: 482924 Successfully paired to 192.168.1.130:37099 [guid=adb-235XY]
- (仅适用于 Linux 或 Microsoft Windows)运行
adb connect ipaddr:port
。使用无线调试下的 IP 地址和端口。图 2. 无线 adb IP 地址和端口号。
通过 WLAN 连接到设备(Android 10 及更低版本)
一般情况下,adb 通过 USB 与设备进行通信,但我们也可以在以下情况下通过 WLAN 使用 adb:
- 将 Android 设备和 adb 主机连接到这两者都可以访问的同一 WLAN 网络。请注意,并非所有接入点都适用;我们可能需要使用防火墙已正确配置为支持 adb 的接入点。
- 如果要连接到 Wear OS 设备,请关闭手机上与该设备配对的蓝牙。
- 使用 USB 线将设备连接到主机。
- 设置目标设备以监听端口 5555 上的 TCP/IP 连接。
adb tcpip 5555
- 拔掉连接目标设备的 USB 线。
- 找到 Android 设备的 IP 地址。例如,对于 Nexus 设备,可以在设置 > 关于平板电脑(或关于手机)> 状态 > IP 地址下找到 IP 地址。或者,对于 Wear OS 设备,您可以在设置 > WLAN 设置 > 高级 > IP 地址下找到 IP 地址。
- 通过 IP 地址连接到设备。
adb connect device_ip_address
- 确认主机已连接到目标设备:
$ adb devices List of devices attached device_ip_address:5555 device
现在,我们就已经建立wireless ADB连接啦!