科普发布于: 阅读约 4 分钟

ADB 是什么?一文看懂安卓调试桥 Android Debug Bridge

ADB(Android Debug Bridge,安卓调试桥)让电脑可以和安卓设备通信。了解它的三个组成部分、连接如何授权、USB 与 Wi-Fi 连接,以及它和 fastboot 的区别。

ADB 是 Android Debug Bridge(安卓调试桥)的缩写,是电脑与安卓手机、平板或电视通信的工具。用它可以在电脑上安装应用、查看日志、复制文件、运行 shell 命令和控制屏幕。Google 把它随 Android SDK 一起发布,Android Studio 每次点击 Run 时,背后用的也是这个工具。

一座由三部分组成的桥

ADB 看起来只是一条命令,实际上是三个程序协同工作:

组成部分运行位置作用
客户端 (Client)你的电脑你输入的 adb 命令。它把请求发送给服务端。
服务端 (Server)你的电脑,在后台运行记录已连接的设备,在客户端和设备之间转发消息。监听 5037 端口。
守护进程(adbd)安卓设备接收命令并在设备上执行。

第一次输入 adb 命令时,如果服务端还没运行,客户端会先启动它。然后服务端会在 USB 和网络上查找设备。运行 adb shell ls 时,客户端把请求交给服务端,服务端转发给设备上的 adbd,输出再沿原路返回。

所以同一时间只应该有一个程序运行 ADB 服务端。如果 Android Studio、scrcpy 和终端都想占用 USB 连接,它们就会互相争抢,你会看到「device busy」之类的报错。解决办法通常是运行 adb kill-server 或关闭其他工具。详见 设备被占用或未授权的解决方法。

设备如何允许电脑接入

ADB 的权限很大,所以 Android 不会让任意电脑使用它。

  1. 必须打开 USB 调试。 它在开发者选项里,而开发者选项默认是隐藏的,需要连续点击版本号七次才会出现(小米/红米/POCO 点 MIUI 版本或 OS 版本)。见 如何打开 USB 调试。
  2. 设备必须授权这台电脑。 每台电脑都有自己的 RSA 密钥。第一次连接时,手机会弹出「允许 USB 调试吗?」(Allow USB debugging?),并显示该密钥的指纹。点击允许之前,设备会显示为 unauthorized,什么都做不了。

你可以随时在开发者选项中点击 撤销 USB 调试授权 (Revoke USB debugging authorizations) 收回授权。

USB 还是 Wi-Fi

ADB 支持两种连接方式:

  • USB 数据线: 默认方式。速度快、稳定,设置起来最简单。
  • 网络: 一种是经典的 adb tcpip,需要先插一次线把手机切换到 5555 端口。另一种是 Android 11 及以上的 无线调试,用配对码配对,完全不需要线。两者的区别见 adb tcpip 与无线调试的区别。

大多数电视无法通过 USB 连接电脑,网络 ADB 是唯一的选择。见 如何用 ADB 控制 Android TV。

ADB 和 fastboot 的区别

两者经常被混淆,因为它们在同一个下载包 Android SDK platform-tools 里。

ADBFastboot
何时可用Android(或 recovery)正在运行时手机处于 bootloader / fastboot 模式,Android 启动之前
用途应用、日志、文件、shell、屏幕刷写分区、解锁 bootloader
设备端adbdbootloader

adb reboot bootloader 是两者之间常用的桥梁:它让正在运行的手机进入 fastboot 模式。进入之后能做什么,请看 fastboot 模式指南。

如何获取 ADB

常见的方式有两种:

  • Android SDK platform-tools: Google 免费提供,支持 Windows、macOS 和 Linux。解压后把文件夹加入 PATH,就能在终端中使用 adb。
  • 在浏览器中使用: Chrome 和 Edge 可以通过 WebUSB 访问 USB 设备,所以网页可以直接使用 ADB 协议。ADBKit 就是这样工作的,USB 连接无需安装任何东西。技术细节见 WebADB 和 WebUSB 是什么。

ADB 安全吗?

ADB 是调试工具,所以它会给已授权的电脑很深的访问权限:可以安装应用、读取应用日志、从共享存储中复制文件。只要电脑是你自己的,并且你清楚自己在运行什么,就是安全的。养成几个好习惯:

  • 只对信任的电脑点击允许。
  • 不再需要时关闭 USB 调试,尤其是日常随身使用的手机。
  • 不要在公共或共享的 Wi-Fi 中开着网络 ADB。

下一步