什么是ADB

ADB, Android Debug Bridge, 是一个client-server程序,能够用来和安卓设备交流html

Client: 用来发送命令的,client运行在开发机器上(电脑cmd, adb shell), ddms也能够建立adb clientjava

Daemon(adbd): 手机上的一个后台进程,用来执行adb命令的android

Server:运行在pc上,用来管理client和dameon的交流(which manages communication between the client and the daemon)shell

 

client(commond) to server, server to dameon(手机执行命令)socket

ADB怎么工做

1.当启动adb client的时候,client会首先检查adb server是否已经在运行,若是没有,会先启动adb serverspa

2.server启动以后,会绑定一个本地的TCP端口5037,而后会监听来自adb client发来的全部命令,adb client使用的都是5037端口来和server交流code

3.server会和手机设备创建链接,server会在端口号5555到5585之间的单数的端口里查找手机。当server找到手机上的adb daemon的时候,server会对那个端口创建链接。要注意的是,每一个手机设备(或者模拟器)都须要一对连续的端口号,一个偶数的端口号是console用的,一个单数的端口号是adb用的,好比server

Emulator 1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
and so on...

4.一旦server与手机创建链接,你就能够使用adb命令去操做手机。由于server能够管理与手机设备的链接,还有处理来自各个adb client的命令。这样,你就能够经过任何client(脚本)去控制手机htm

 

全部的client经过TCP端口号5037进行与server通讯,而server建立local socket与remote socket,前者用于和client通讯,后者用与远端(adbd)进行通讯,emulator经过TCP,real device则经过usb。blog

 

三者通讯整个流程是这样的:
 a、client调用某个adb命令
 b、adb进程fork出一个子进程做为server
 c、server查找当前链接的emulator/device
 d、server接收到来自client请求
 e、server处理请求,将本地处理不了的请求发给emulator/device
 f、位于emulator/device的adbd拿到请求后交给对应的java虚拟机进程。
 g、adbd将结果发回给server
 h、server讲结果发回给client

 

参考:https://developer.android.com/studio/command-line/adb.html

相关文章
相关标签/搜索