adb分为三个部分:PC上的adb client,adb server和手机(也可能是PC上的模拟器)上的adb daemon。



这是一个多多连接的设计。即一台PC可以连接多个手机,一台手机也可以连接多个PC。




安卓开发 adb获取cpu架构 android adb原理_安卓开发 adb获取cpu架构





ADB Client:注意这里的Client和Daemon不是一一对应的,Client比如Eclipse DDMS,Windows终端命令行,豌豆荚等。Client本质上就是Shell, 用来发送命令给Server。发送命令时,首先检测PC上有没有启动Server,如果没有Server,则自动启动一个Server,然后将命令发送到Server,并不关心命令发送过去以后会怎样。


ADB Server:运行在PC上的后台程序,目的是检测USB接口何时连接或者移除设备。ADB Server维护着一个“已连接的设备的链表”,并且为每一个设备标记了一个状态:offline,bootloader,recovery或者online;Server一直在做一些循环和等待,以协调client和Server还有daemon之间的通信。offline说明Server发现了一个设备,但是不能成功连接到Daemon----这样最好重启一下手机。


ADB Daemon:运行在手机上的一个进程,作用是连接到adb server(通过usb或tcp-ip),并且为client提供一些服务,



Client和Server之间还是要通过TCP/IP通信的,Server侦听本机的5037端口,Client试图去连接这个端口。



我们看到,在没有client的时候,server进程孤独的侦听着5037口


安卓开发 adb获取cpu架构 android adb原理_服务器_02



在有client的时候,client和server建立了连接。


安卓开发 adb获取cpu架构 android adb原理_安卓开发 adb获取cpu架构_03



盗网图一用,一张图胜过千言万语:


安卓开发 adb获取cpu架构 android adb原理_Server_04



adb的代码放在android的system\core\adb中


</article>

adb分为三个部分:PC上的adb client,adb server和手机(也可能是PC上的模拟器)上的adb daemon。

这是一个多多连接的设计。即一台PC可以连接多个手机,一台手机也可以连接多个PC。


安卓开发 adb获取cpu架构 android adb原理_安卓开发 adb获取cpu架构





ADB Client:注意这里的Client和Daemon不是一一对应的,Client比如Eclipse DDMS,Windows终端命令行,豌豆荚等。Client本质上就是Shell, 用来发送命令给Server。发送命令时,首先检测PC上有没有启动Server,如果没有Server,则自动启动一个Server,然后将命令发送到Server,并不关心命令发送过去以后会怎样。


ADB Server:运行在PC上的后台程序,目的是检测USB接口何时连接或者移除设备。ADB Server维护着一个“已连接的设备的链表”,并且为每一个设备标记了一个状态:offline,bootloader,recovery或者online;Server一直在做一些循环和等待,以协调client和Server还有daemon之间的通信。offline说明Server发现了一个设备,但是不能成功连接到Daemon----这样最好重启一下手机。


ADB Daemon:运行在手机上的一个进程,作用是连接到adb server(通过usb或tcp-ip),并且为client提供一些服务,


Client和Server之间还是要通过TCP/IP通信的,Server侦听本机的5037端口,Client试图去连接这个端口。


我们看到,在没有client的时候,server进程孤独的侦听着5037口


安卓开发 adb获取cpu架构 android adb原理_服务器_02



在有client的时候,client和server建立了连接。


安卓开发 adb获取cpu架构 android adb原理_安卓开发 adb获取cpu架构_03



盗网图一用,一张图胜过千言万语:

安卓开发 adb获取cpu架构 android adb原理_Server_04



网上一位兄弟的流程图画的也很好:

adb的代码放在android的system\core\adb中