zoukankan      html  css  js  c++  java
  • 什么是ADB

    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用的,比如

    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(脚本)去控制手机

    所有的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

  • 相关阅读:
    subtitleedit
    NHibernate.Mapping1.1.csgen 模板
    js jqueryhotkeys
    c#.net将对象序列化,反序列化json
    ruby document
    sqlserver2008新数据类型
    [转]杂记
    UVA 532 Dungeon Master
    UVA 10557 XYZZY
    UVA 10129 Play on Words
  • 原文地址:https://www.cnblogs.com/baron89/p/5829023.html
Copyright © 2011-2022 走看看