Android之adb调试原理-yellowcong

AndroidDebug Bridge我们一般简称为adb,它是一个非常强大的命令行工具,通过adb工具,你能够与你的android设备进行通信。adb是基于C/S模式的程序,包含以下三个组件:1、adb client(运行在手机上) ;2、adb server(运行在pc上);3、adb daemon(运行在手机上,这个是运行命令的组建)。连接的端口范围是5555-5585,每一个adb连接,会开启两个端口,这样一部手机,只能建立16条连接了。不过这远远够用了。

结构图

这里写图片描述

adb client(客户端)

client是运行在PC端的,该组件发送命令,可以通过发出adb命令从命令行终端调用客户端。每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。所有的client都是通过5037端口与adb-server进行通信的。

adb daemon(adbd后台程序)

Daemon,该组件作为一个后台进程运行在模拟器/真实Android设备中,在设备上运行命令。daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这样一个后台进程,并且为其分配了两个连续的端口,比如:

Emulator1, console: 5554

Emulator1, adb: 5555

因为每个设备都分一组两个端口,所以adb连接手机的最大数量为16。
端口的作用,在这两个端口中,其中偶数端口是用于server与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。

adb server(服务器)

Server,该组件管理客户端和后台程序之间的通信,作为一个后台的程序运行在PC端。当一个server开启的时候,会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

猜你喜欢

转载自my.oschina.net/u/1987703/blog/1617632