美文网首页
Android ADB 通信 你知道的

Android ADB 通信 你知道的

作者: csj_verson | 来源:发表于2020-03-10 16:08 被阅读0次

取之于网,用之于网。本为过路人,姑且搬运中。

一、名释

        Android: 嵌入式操作系统。截止发文,手机市场占有率第一的操作系统。基于Linux核。

        ADB:Android Debug Bridge。用于快速便捷获取系统信息和控制系统。

        AOSP:  Android Open-Source Project。安卓操作系统源码。

二、主题

        关于常规Android debug的通信方式(ADB)的流程浅析。

三、前奏

        模块共有 3 大块。

        x. adb client:客户端。提供命令集的输入窗口。

        y. adb server:服务端。与deamon保持连接并响应客户端指令并与daemon通信获取指令对应的执行结果。

        z. adb daemon:守护端。处理指令、交由系统对应部门执行并返回给server结果。也就是常说的adbd进程。

        

        通信方式共有 2 种。

        x. usb:通过usb与嵌入式设备连接后通信。

        y. socket:通过socket与系统通信。

        源码路径:AOSP:/system/core/adb/

        默认端口有 2 类。

        x.  client与server通过5037/5038端口连接交流。

        y.  daemon的socket方式默认5555/5554端口。

        宿主有 2 类。

        x. PC上运行着client和server。

        y. 嵌入式设备上运行着daemon。

        命令流转有 3 种。

        x. 在client端就可以直接返回结果。比如adb version 和adb help等。

        y. 在server端就可以直接获得结果。比如adb devices。

        z. 一定要经过daemon才可能获得结果。绝大多数命令就是这样。

四、HIGH

        DAO图走一波!(个人非常不喜欢做图,只有借用他人好图)

        图片来源 :https://blog.csdn.net/XING1716263268/article/details/8998192?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

        

        图一非常简洁明了,说明了三者关系。

        图二描述了PC端的流程。

        图三描述server启动流程

        图四描述了daemon的启动。

                code: aosp/system/core/adb/daemon/

                主入口就在main.cpp中的main函数。

                然后调用adbd_main(DEFAULT_ADB_PORT)实体。

                在adbd_main中判断access(USB_FFS_ADB_EP0, F_OK)来确定是否要监听usb。

                如果上述返回为0则监听usb,并开始执行usb_init(),usb init不在此处展开。

                usb_init完后,adbd会检查service.adb.tcp.port是否有设置端口。如果有,则setup_port(port)此端口,也就转换为socket方式通信,local_init(port)。

                

                

        图五描述了server中local_init的初始化过程。扫描5555-5585,找到设备也可能是模拟器并连接。

        图六描述了daemon中local_init的初始化过程。也是标准的socket绑定监听的过程。无需多述。

        

        图七描述了linux pc下的usb通信初始化。另外两个主流的操作系统windows和darwin与上述逻辑基本一致,只是接口等和API方式的差别。

        图八描述的daemon中的流程。

五、收

        如不尽兴,还请移步如下好文。

        https://blog.csdn.net/Clovelegent/article/details/52515889?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

相关文章

  • ADB命令使用手册

    概述 Adb作为PC和Android设备交互与通信的工具 Android调试桥接,Android DebugBri...

  • adb安装

    什么是 ADB? Android调试桥( adb )是一个开发工具,帮助安卓设备和个人计算机之间的通信。 这种通信...

  • 在 MAC OS X 安装 ADB (Android调试桥)

    什么是 ADB? Android调试桥( adb )是一个开发工具,帮助安卓设备和个人计算机之间的通信。 这种通信...

  • ADB常用命令

    一、什么是ADB? adb:一种功能多样的命令行调试工具。 Android 调试桥 (adb),可与设备进行通信。...

  • 你确定已经掌握了adb的使用?

    前言 ADB是android debug bridge的缩写,负责计算机与Android设备的几乎所有通信和协作,...

  • ADB基本使用

    ADB是android debug bridge的缩写,负责计算机与Android设备的几乎所有通信和协作,可以认...

  • Android之ADB操作整理

    1简介: Android命令工具adb是一种功能多样的命令行工具,可让您与设备进行通信。 Adb命令可用于执行各种...

  • Android 自动化测试 adb

    adb 介绍 adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,adb ...

  • Android adb常用命令

    Android adb常用命令 adb是什么 Android Debug Bridge (adb) is a ve...

  • Mac上Android Studio调试Android手机

    Android调试桥( adb )是一个开发工具,帮助安卓设备和个人计算机之间的通信。 这种通信大多是在USB电缆...

网友评论

      本文标题:Android ADB 通信 你知道的

      本文链接:https://www.haomeiwen.com/subject/ilzqjhtx.html