附上安卓官网关于ADB的说明:ADB调试说明
序言
在学习linux嵌入式的过程中需要烧写各种镜像,有两种方法,一种是从TF卡,这个很容易理解,另一种是利用ADB烧写,这种就有点不太了解,用着有一种奇怪的感觉,所以今天打算来稍微了解一点,源码不打算看了。这篇文章主要分为如下几个部分:
- 什么是ADB
- ADB的工作原理
- 几张图片说明
什么是ADB
Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
- 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
- 守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
- 服务器:管理客户端和守护进程之间的通信。服务器在开发计算机上作为后台进程运行。
adb
包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,管理器会将此软件包安装在 android_sdk/platform-tools/
。或者,如果您需要独立的 Android SDK 平台工具软件包,可以点击此处进行下载。
要了解如何连接设备以进行 adb 通信,包括如何使用 Connection Assistant 对常见问题进行排查,请参阅在硬件设备上运行应用。
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 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。
我们在使用的时候需要安装一个ADB驱动,我的理解是,这个驱动是用来检测安卓设备的,一旦有安卓设备接到USB端口,ADB驱动就会将其挂载到相应的设备列表,这样ADB Sever就可以操作这个设备了,所以ADB驱动是一定需要的。