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设备。









  • 相关阅读:
    用迁移学习创造的通用语言模型ULMFiT,达到了文本分类的最佳水平
    论文分享|《Universal Language Model Fine-tuning for Text Classificatio》
    tesnorflow实现N个epoch训练数据读取的办法
    理解TensorFlow的Queue
    tensorflow基本操作介绍
    前端框架 Vue 初探
    LeetCode 292 Nim Game(Nim游戏)
    设计模式有感
    说说翻转的数据结构课
    java 中xml转换为json对象
  • 原文地址:https://www.cnblogs.com/james1207/p/3253683.html
Copyright © 2011-2022 走看看