了解adb的基本原理

ADB就是Android调试桥的意思,很形象。但不知道是windows自己的缘由仍是windows乱七八糟软件太多,用USB调试手机时,常常连不上ADB,或者就出现offline,致使费时费力,焦头烂额。索性去把adb直接搞清楚。android

adb分为三个部分:PC上的adb client,adb server和手机(也多是PC上的模拟器)上的adb daemon。
这是一个多多链接的设计。即一台PC能够链接多个手机,一台手机也能够链接多个PC。
 
 
 

 

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口

 

 

在有client的时候,client和server创建了链接。windows

 

 

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

 

 

 

网上一位兄弟的流程图画的也很好:
 
adb的代码放在android的system\core\adb中
相关文章
相关标签/搜索