zoukankan      html  css  js  c++  java
  • ADB调试原理

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/yelllowcong/article/details/78986566


    AndroidDebug Bridge我们一般简称为adb,它是一个非常强大的命令行工具,通过adb工具,你能够与你的android设备进行通信。adb是基于C/S模式的程序,包含以下三个组件:1、adb client(运行在手机上) ;2、adb server(运行在pc上);3、adb daemon(运行在手机上,这个是运行命令的组建)。连接的端口范围是5555-5585,每一个adb连接,会开启两个端口,这样一部手机,只能建立16条连接了。不过这远远够用了。

    结构图


    adb client(客户端)
    client是运行在PC端的,该组件发送命令,可以通过发出adb命令从命令行终端调用客户端。每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。所有的client都是通过5037端口与adb-server进行通信的。

    adb daemon(adbd后台程序)
    Daemon,该组件作为一个后台进程运行在模拟器/真实Android设备中,在设备上运行命令。daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这样一个后台进程,并且为其分配了两个连续的端口,比如:

    Emulator1, console: 5554

    Emulator1, adb: 5555

    因为每个设备都分一组两个端口,所以adb连接手机的最大数量为16。
    端口的作用,在这两个端口中,其中偶数端口是用于server与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。

    adb server(服务器)
    Server,该组件管理客户端和后台程序之间的通信,作为一个后台的程序运行在PC端。当一个server开启的时候,会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

  • 相关阅读:
    C/C++ 库函数 是否调用 WinAPI
    获得图形的实际坐标值
    电影
    adobe flash player 下载地址
    加速软件
    电影_排行榜
    transform
    MyEclipse
    Android
    AAA
  • 原文地址:https://www.cnblogs.com/tester-lyj/p/12008204.html
Copyright © 2011-2022 走看看