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

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

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

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

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

ADB怎么工作

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

2.server启动之后,会绑定一个本地的TCP端口5037,然后会监听来自adb client发来的所有命令,adb client使用的都是5037端口来和server交流

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

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

4.一旦server与手机建立连接,你就可以使用adb命令去操作手机。因为server可以管理与手机设备的连接,还有处理来自各个adb client的命令。这样,你就可以通过任何client(脚本)去控制手机

所有的client通过TCP端口号5037进行与server通信,而server创建local socket与remote socket,前者用于和client通信,后者用与远端(adbd)进行通信,emulator通过TCP,real device则通过usb。

三者通信整个流程是这样的:
 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

什么是ADB的更多相关文章

  1. 通过adb方式给安卓手机截图的cmd批处理文件

    @echo off rem  通过adb方式截图rem  需要安装adb ,一般安装了android sdk 默认带了adb ,路径为sdk目录的android-sdk\platform-toolsr ...

  2. Android 工具-adb

    Android 工具-adb 版权声明:本文为博主原创文章,未经博主允许不得转载. Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的. Android D ...

  3. 安卓虚拟机adb shell sqlite3数据库

    adb shell 连接: //http://www.cnblogs.com/xiaobo-Linux/ Android把数据都存放在data/data目录下. 我们使用cd命令转到data/data ...

  4. adb devices 偵測不到 手機

    現象: system 有偵測到 mobile phone, xxx@xxx-ThinkPad-T460p:~/.android$ lsusb Bus Device : ID 1d6b: Linux F ...

  5. Android之什么是Activity和常用的ADB命令以及Android项目结构的认识

    总结一下之前学习Android的一些内容 一:  Android常用的ADB命令(adb android调试桥)      1.adb devices   查看模拟器设备并重新连接. 2.adb ki ...

  6. 四.Android adb命令(持续更新...)

    1.安装:甭管从哪里下载下来的apk,放在指定的目录下,不一定非要是sdk的目录下:adb install "d:\hxcjaz.apk"(指定的一个目录)2.卸载:adb uni ...

  7. linux安装adb

    本文只针对centOS6.8,其他版本未测试 1.下载adb包 下载android sdk for linux(http://tools.android-studio.org/index.php/sd ...

  8. adb工具获取appPackage和appActivity

    1,手机连接电脑,打开手机调试功能,并运行待测试APP,终端执行: adb shell 2,接着,执行: dumpsys window windows | grep -E 'mFocusedApp' ...

  9. 魅族mx4 pro连电脑,adb无法获取devices信息解决

    根据 flyme 的文档: K:\MX4 USB Reference Manual\简体\MX4_ADB_参考说明书.txt 操作如下: 二.Windows XP中文环境1.  建立或修改C:\Doc ...

  10. ADB

    adb logcat 命令详解 log过滤 http://blog.csdn.net/liao277218962/article/details/50129009 如何使用 adb logcat 查看 ...

随机推荐

  1. hibernate工具类HibernateUtil详解

    1.为什么要用hibernateUtil这个类,先看这段代码:     //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他      Con ...

  2. 【Todo】CSDN的《问底》系列-学习

    看到CSDN的这个系列<问底>,看各篇文章的题目感觉不错.好好学习下: http://www.csdn.net/tag/%E9%97%AE%E5%BA%95/news

  3. 基础组件_panel面板

    面板作为承载其它内容的容器.这是构建其他组件的基础(比如:layout,tabs,accordion等).它还提供了折叠.关闭.最大化.最小化和自定义行为.面板可以很容易地嵌入到web页面的任何位置. ...

  4. js之客户端检测

    1 能力检测判断是否有某个属性或方法,例:在低版本中的opera浏览器中,window下有个opera属性 if (window.opera) { alert("opera"); ...

  5. HTTP全部报文首部字段

    总结了一下HTTP各种报文首部字段. HTTP报文类型与结构 HTTP报文结构 报文首部 空行(CR+LF) 报文主体 HTTP报文类型 http有两种类型报文,请求报文和响应报文两种报文的首部结构如 ...

  6. Qt Assistant介绍

    简介 Qt Assistant也就是我们常说的Qt助手,是一款用于呈现在线文档的工具. 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 ...

  7. [转] POJ字符串分类

    POJ 1002 - 487-3279(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=1002题意:略解法:二叉查找数,map,快排... POJ 1 ...

  8. App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  9. ISO中运行时简单使用及KVC补充

    一.运行时简单使用 1.包含头文件<objc/message.h> 2.给对象发送消息的方法:objc_msgSend(id, SEL, ....) * 第1个参数是对象 * 第2个参数是 ...

  10. 【JavaScript学习笔记】if使用

    <html> <body> <script language="JavaScript"> var a=4; var b=2; if(a==3) ...