问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

02-adb的工作原理和常见命令

创作时间:
作者:
@小白创作中心

02-adb的工作原理和常见命令

引用
CSDN
1.
https://blog.csdn.net/zhangzhan0813/article/details/139655948

什么是adb?

ADB是Android Debug Bridge的简称,是Android平台的调试工具。通过adb命令可以获取安卓设备上的信息,也可以直接操作管理Android模拟器或者真实的Android设备。

ADB采用客户端-服务端程序架构(C-S架构),主要包含以下三个组件:

  1. 客户端(adb client):运行在PC上,用来发送adb命令。
  2. 服务端(adb server):运行在PC上的一个守护进程,用来管理adb client端和Android设备上的adbd进程之间的通信。具体有以下两个作用:
  • 检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止。
  • 将adb client的请求通过USB或者TCP的方式发送给Android设备上的adbd进程进行处理。
  1. 守护程序(adbd):运行在Android设备(真机/模拟器)后台的一个进程,它的主要作用是处理来自adb server的命令,然后获取对应Android设备的信息,最后将结果返回给adb server。

adb的工作原理

当启动某个adb client时,该客户端会先检查是否有adb server进程正在运行。如果没有,它会先启动服务器进程,服务器进程在启动后会绑定到5037端口,并监听adb client发出的命令(所有adb client均通过5037端口与adb server进行通信)。如下图:

然后,服务器会与所有正在运行的设备建立连接,建立连接后,你便可以使用adb命令访问这些设备,由于服务器管理着设备的连接,并处理来自多个adb client的命令,因此你可以从任意客户端控制任意设备。

adb的通信流程

  1. 我们通过命令行界面或者Android Studio工具等直接或间接地调用某个adb命令,比如adb install或者adb devices。
  2. 这时候adb client进程会fork出一个子进程作为adb server,而这个fork出的进程将常驻PC端,监听来自adb client端的请求。【fork()函数用于从一个已经存在的进程内创建一个新的进程,新的进程称为“子进程”,相应地称创建子进程的进程为“父进程”。使用fork()函数得到的子进程是父进程的复制品,子进程完全复制了父进程的资源,包括进程上下文、代码区、数据区、堆区、栈区、内存信息、打开文件的文件描述符、信号处理函数、进程优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等信息】
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号