zoukankan      html  css  js  c++  java
  • adb(Android Debug Bridge)(一)

    上一篇介绍的am,pm命令都是基于adb shell下的命令。这节来详细介绍下adb命令。

    Android Debug Bridge(adb)是一个让你跟模拟器或者android设备通信的多功能命令。它是一个包含三个组件的client-server程序:

    1、运行在你开发机器上的adb client,你能从shell中通过adb命令调用一个adb client,另外ADT插件和DDMS都是使用了adb client功能。

    2、运行在你开发机器上的一个adb server,该adb server作用在于维护adb client和adb daemon之间的通信。

    3、运行在模拟器或者android设备后台的adb daemon。


    adb tool在<sdk>/platform-tools/目录下。


    当你启动一个adb client的时候,adb client会去检查开发机器上是否已经运行了adb server进程,如果没有,它会去启动adb server。当adb server启动后,adb server绑定本地 TCP5037端口,然后监听从adb client发过来的adb命令。所有的adb client都是通过5037端口跟adb server通信。


    adb server要跟所有运行在开发机器上的模拟器或者android设备建立连接。它通过扫描5555-5585之间的所有奇数端口查找模拟器或者android设备。adb server扫描到每个adb daemon都会建立跟其的相关端口的绑定。既然每个模拟器或者android设备都获取到一对有序的端口(一个偶数console连接端口和一个奇数adb连接端口)如下:Emulator1, console:5554 Emulator1, adb:5555;Emulator2, console:5556 Emulator2, adb:5557;依此类推。同样的,如果一个模拟器连接adb的商品为5555,那么连接console的端口就是5554。

    当adb server跟模拟器或者android设备连接成功后,你就可以通过adb命令(或者脚本)去访问该模拟器或android设备。

    注意:连接一个android4.2.2以上的android设备的时候,系统会通过一个对话框提示询问是否接受一个RSA密钥允许通过开发机器的调试。这种安全机制保护用户设备,让adb命令不能执行。除非你能解锁该android设备并确认询问对话框,当然,这在adb1.0.31以上的版本(SDK Platform-tools16.0.1以上)是可以实现的。


    你可以在开发机器上的命令行或者脚本执行adb命令。如:

    adb [-d|-e|-s <serialNumber>] <command>

    如果你的开发机器上只运行了一个模拟器或者android设备,那么adb命令将默认发送到该模拟器或者android设备上执行。如果运行了多个模拟器或者android设备,那么你要使用-d,-e或者-s参数去指定执行adb命令的模拟器或者android设备。以下是相关参数或命令的用法:

    -d :将adb命令指向唯一连接到开发机器上的android设备,如果开发机器上连接了多个android设备将返回提示错误。

    -e :将adb命令指向唯一的模拟器。

    -s <serialNumber>:将adb命令指向具体的android设备(如:emulator-5556)

    devices :查询所有连接到开发机器上的android设备。

    help :帮助命令。

    version : 版本查询。

    logcat [option] [filter-specs] :打印log信息。

    jdwp :有效的JDWP进程列表。

    install <path-to-apk> : 安装apk到指定的设备。

    pull <remote> <local> :复制文件到开发机器上的指定位置。

    push <local> <remote> :复制文件到指定的android设备。









  • 相关阅读:
    如何在iTerm2中配置oh my zsh?
    sublime中格式化jsx文件
    ES6 new syntax of Literal
    ES6 new syntax of Rest and Spread Operators
    How to preview html file in our browser at sublime text?
    ES6 new syntax of Default Function Parameters
    ES6 new syntax of Arrow Function
    七牛云2018春招笔试题
    Spring-使用注解开发(十二)
    Spring-声明式事物(十一)
  • 原文地址:https://www.cnblogs.com/james1207/p/3253683.html
Copyright © 2011-2022 走看看