ADB(Android Debug Bridge)是 Android 开发中非常重要的工具,它由 3 个主要模块 组成,分别是 ADB Client(客户端)、ADB Server(服务端) 和 ADB Daemon(守护进程)。这三个模块协同工作,使得开发者可以通过命令行与 Android 设备或模拟器进行交互。
以下是 ADB 三个模块的详细介绍:
1. ADB Client(客户端)
-
作用:ADB Client 是用户直接交互的部分。用户在命令行中输入 ADB 命令时,实际上是调用 ADB Client。
-
功能:
-
接收用户输入的命令(如
adb devices
、adb install
等)。 -
将命令发送给 ADB Server。
-
-
运行位置:ADB Client 运行在开发者的电脑上。
-
示例:
-
当你在终端输入
adb devices
时,ADB Client 会将这个命令发送给 ADB Server。
-
2. ADB Server(服务端)
-
作用:ADB Server 是 ADB 的核心部分,负责管理客户端与设备之间的通信。
-
功能:
-
接收来自 ADB Client 的命令。
-
与设备上的 ADB Daemon 进行通信。
-
管理设备的连接状态。
-
-
运行位置:ADB Server 也运行在开发者的电脑上。
-
特点:
-
ADB Server 是一个后台进程,启动后会一直运行,直到手动停止。
-
如果 ADB Server 未启动,ADB Client 会自动启动它。
-
-
常用命令:
-
启动 ADB Server:
-
adb start-server
停止 ADB Server:
adb kill-server
3. ADB Daemon(守护进程)
-
作用:ADB Daemon(通常称为
adbd
)是运行在 Android 设备或模拟器上的后台进程,负责执行 ADB Server 发送的命令。 -
功能:
-
接收来自 ADB Server 的命令。
-
在设备上执行命令(如安装 APK、抓取日志等)。
-
将命令执行结果返回给 ADB Server。
-
-
运行位置:ADB Daemon 运行在 Android 设备或模拟器上。
-
特点:
-
ADB Daemon 通常在设备启动时自动运行。
-
如果设备未开启 USB 调试模式,ADB Daemon 将无法与 ADB Server 通信。
-
-
启用/禁用 ADB Daemon:
-
启用:
adb shell setprop persist.adb.enable 1
-
禁用:
adb shell setprop persist.adb.enable 0
ADB 三个模块的协作流程
-
用户输入命令:用户在命令行中输入 ADB 命令(如
adb devices
)。 -
ADB Client 发送命令:ADB Client 将命令发送给 ADB Server。
-
ADB Server 处理命令:ADB Server 接收命令,并与设备上的 ADB Daemon 建立连接。
-
ADB Daemon 执行命令:ADB Daemon 在设备上执行命令,并将结果返回给 ADB Server。
-
ADB Server 返回结果:ADB Server 将结果返回给 ADB Client。
-
用户查看结果:ADB Client 将结果显示在命令行中。
ADB 三个模块的常见问题
1. ADB Server 无法启动
-
原因:端口被占用或 ADB 版本不兼容。
-
解决方法:
-
停止占用端口的进程。
-
更新 ADB 工具。
-
2. ADB Daemon 未运行
-
原因:设备未开启 USB 调试模式或 ADB Daemon 被禁用。
-
解决方法:
-
开启设备的 USB 调试模式。
-
启用 ADB Daemon。
-
3. ADB Client 无法连接 ADB Server
-
原因:ADB Server 未启动或网络问题。
-
解决方法:
-
手动启动 ADB Server:
adb start-server
-
检查网络连接。
-
ADB 的三个模块(ADB Client、ADB Server 和 ADB Daemon)协同工作,使得开发者可以通过命令行与 Android 设备或模拟器进行交互。理解这三个模块的作用和协作流程,有助于更好地使用 ADB 工具进行开发、调试和测试。