一、什么是ADB
ADB,全称Android Debug Bridge,即安卓调试桥接,是Android sdk中不可或缺的工具,主要用于管理模拟器或真实设备的状态。
ADB分为三个部分:PC上的adb client,adb server和手机(也可能是PC上的模拟器)上的adb daemon。
这是一个多多连接的设计。即一台PC可以连接多个手机,一台手机也可以连接多个PC。
- client(运行在pc端的adb client):
命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求;
- Server (运行在pc端的adb server):
ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上;
- demon (运行在设备端的常驻进程adb demon (adbd)):
程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务;
daemon程序意思守护进程。通常在系统后台长时间运行,由于没有控制终端而无法与前台交互,daemon程序一般作为系统服务使用。daemon是静态的,就是某一程序,daemon运行后会提供某种服务,服务是动态的,是程序运行产生的进程。通常说的Linux守护进程就是指daemon或者服务。daemon的名称通常为相应的服务后加上一个d。如cron服务的daemon为crond,http服务的daemon为httpd。
二、ADB的工作原理
当启动adb客户端时,客户端会首先检查adb服务是否已在运行。若未运行,则会启动服务器进程,该进程会与本地的TCP端口5037进行绑定,并开始监听来自adb的指令。所有adb客户端都通过5037端口与adb服务器进行数据交换。在服务器与设备建立连接的过程中,它会扫描5555至5585之间的奇数号端口来查找模拟器,但请注意,这个范围仅提供前16个模拟器的使用。一旦服务器发现adb的守护进程(即adbd),便会与之建立连接,从而能够处理来自各种adb客户端的命令。