【无标题】

ADB

本文主要是介绍Android中Android Debug Bridge调试桥的分类,ADB-server是运行下PC端的后台服务进程;ADB-client是运行在PC端的多个客户端进程,主要与ADB-server交互;adbd是运行在Android设备的服务进行程,主要是接收ADB-server发来的请求和处理操作。

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 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。

1、ADB-server端

ADB-server运行在PC端,它是一个始终在后台运行的服务进程,作为与手机端交互的唯一接口。ADB-server处理ADB-client的请求,一部分请求无须与Android设备交互,直接在PC本地完成;剩下的请求则需要与Android设备端的adbd交互,ADB-server起到了一个switcher的作用,即类似透传的功能。

2、ADB-client端

ADB-client也运行在PC端,可以同时存在多个,即每打开一个adb shell 的命令行的窗口,就存在一个ADB-client进程。其中每个ADB-client由用户启动,完成多种功能。其作用是与ADB-server交互,实现用户请求的功能,即接收用户输入指令,进行向ADB-server服务端传递。

3、adbd设备端

最后 adbd 是运行在Android设备端的常驻进程,同时只能存在一个,每部手机或开发板只能有一个 adbd服务进程。作用是接收PC端的ADB-server发来的请求,并作出对应处理操作。

4、文件位置信息

注意,这三个可执行程序都是同一套代码编译出来的,位于/system/core/adb/ 目录下, ADB-client和ADB-server对应同一个可执行文件“adb(.exe)”,编译时有-DADB_HOST=1宏。而adbd对应目标设备上的可执行文件”adbd”,编译时的参数是-DADB_HOST=0。

5、图文信息

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值