adb简介
Android Debug Bridge (adb) 是一个Android的命令行工具。可以用来连接模拟器或实际的移动设备。比如 adb logcat, adb shell。Dalvik Debug Monitor Server(DDMS) 后台也是运行的adb来实现监控调试移动设备。
adb 原理
adb允许我们与模拟器或连接的 Android 设备进行通信。并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。该工具是一个C/S架构实现的程序,包括三个组件:
- ADB Client:运行在PC上,通过在命令行执行adb,就启动了ADB Client程序
- ADB Server:运行于PC的后台进程,用于管理ADB Client和Daemon间的通信
- ADB Daemon (即adbd) :运行在模拟器或移动设备上的后台服务。当Android系统启动时,由init程序启动adbd。如果adbd挂了,则adbd会由init重新启动。
您可以在 android_sdk/platform-tools/ 中找到 adb 工具。
image.png
adb执行过程
- 1.Client 调用某个 adb 命令
- 2.adb 进程 fork 出一个子进程作为 Server
- 3.Server 查找当前连接的 emulator/device
- 4.Server 接收到来自 Client 请求
- 5.Server 处理请求,将本地处理不了的请求发给 emulator/device
- 6.位于 emulator/device 的 adbd拿到请求后交给对应的java虚拟机进程。
- 7.adbd 将结果发回给 Server
- 8.Server 将结果发回给 Client
Q&A
Q:PC上为什么要有一个ADB Server,而不是ADB Client 和 ADB Daemon 直接通信呢?
A:因为 ADB 是一个需要支持多对多架构的工具,一个PC可以连接多台手机设备或虚拟机,一个手机也可以同时连接多台PC。就需要一个统一的Sever管理多个设备的连接。
网友评论