adb功能怎么用(看了这篇才明白)(1)

什么是ADB

Adb的全称为 Android Debug Bridge:Android调试桥,是一个Android的命令行工具,可以用来连接并监控调试模拟器或实际的移动设备。adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

adb 包含在 Android SDK 平台工具软件包中,可以通过Android Studio的SDK Manager下载,也可以下载单独的软件包进行安装,adb在会在adk目录//platform-tools/目录下。

adb功能怎么用(看了这篇才明白)(2)

ADB原理

当启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 tcp 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。

adb client与adb server之间是通过tcp进行通信,adb server和adbd通过usb或者tcp进行通信。ADB Server对本地的TCP5037端口进行监听,等待ADB Client的命令。ADB Client每个命令都包含两个部分,前一部分包含固定四个字节,以十六进制的方式指明指令的长度,后一部分才是真正的指令内容。

总结:在终端输入adb命令后都发生了什么

  1. adb client调用adb命令
  2. adb进程fork出一个子进程作为adb server
  3. adb server查找当前可连接的设备
  4. server在5037端口监听来自adb client的请求
  5. adb server处理请求,比如adb version就是server可以直接处理的,处理不掉的发给 device,比如adb devices
  6. adbd拿到请求后交给java虚拟器进程
  7. adbd将结果返回给adb server
  8. adb server将结果返回给adb client

adb功能怎么用(看了这篇才明白)(3)

ADB常用的一些命令

下篇文章我们将讨论如何用python实现adb client,直接和adb server进行通信,点击关注,干货不错过。

,