针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。

Android Debug Bridge

adb其实就是Android Debug Bridge,安卓调试桥的缩写,adb.exe在安装的anroid的sdk开发包platform-tools目录下,它是一个C/S架构的命令行主要由3部分组成:

  1、运行在PC端的Client:可以通过它对Android应用进行安装、卸载及调试

    Eclipse 中的 ADT、SDK Tools 目录下的 DDMS、Monitor 等工具,都是同样地用到了 adb 的功能来与 Android 设备进行交互。

    PC 端的手机助手,诸如 360 手机助手、豌豆荚、应用宝等,其除了安装第三方应用方便,其他的功能,基本上都可以通过 adb 命令去完成,这里建议测试人员尽量不要在电脑上安装这类手机助手,因为其自带的 adb 程序可能会与 Android SDK 下的 adb 程序产生冲突,5037 端口被占用,导致使用 adb 命令时无法连接到设备

  2、运行在PC端的Service:其管理客户端到Android设备上adb后台进程的连接

    adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程

  3、运行在 Android 设备上的 adb 后台进程(adb daemon,守护进程,一个以后台进程的形式运行于模拟器或物理手机设备上的守护程序(daemon))

    执行 adb shell ps | grep adbd ,可以找到该后台进程,windows 请使用 findstr 替代 grep

    

[xuxu:~]$ adb shell ps | grep adbd
root 23227 1 6672 832 ffffffff 00019bb4 S /sbin/adbd

    这里注意一个地方,就是 adb 使用的端口号,5037,有必要记一下

  当用户启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行,adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,所有的adb客户端都是使用端口5037与adb服务器进行对话的。接着服务器将所有运行中的模拟器或设备实例建立连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到了adb守护程序,它将建立一个到该端口的连接。请注意任何模拟器或设备实例会取得两个连接的端口,一个偶数端口用来控制与控制台的连接,和一个技术端口用来控制与adb连接。

adb命令

在开发或者测试的过程中,我们可以通过adb来管理多台设备,其一般的格式为:

adb [-e | -d | -s <设备序列号>] <子命令>

在配好环境变量的前提下,在命令窗口当中输入adb help或者直接输入adb,将会列出所有选项的说明及子命令

这里介绍一些里面蝉蛹的命令:

  1、adb devices,获取设备列表及设备状态 

[xuxu:~]$ adb devices
List of devices attached
44c826a0 device

  2、adb get-state,获取设备的状态 

[xuxu:~]$ adb get-state
device

  设备的状态有3种,device,offline,unknown

  device:设备正常连接

  offline:表明设备或者模拟器没有连接到adb服务器或者没有响应,连接异常,设备无响应

  unknown:没有连接设备

  

  3、adb install,安装应用

    只有一个手机设备或者一个模拟器设备:adb install 路径

    指定设备或者模拟器安装:adb -s 物理手机设备序列号/手机模拟器设备序列号 install 安装包路径

    覆盖安装:adb -s 设备序列号 install -r 安装包路径

windows 下如果需要安装含有中文名的 apk ,需要对 adb 进行修改,百度可以找到做出修改的adb , 支持中文命令的 apk,请自行搜索

    

  4、adb uninstall,卸载应用

    adb uninstall 包名

    指定设备或者模拟器设备卸载:adb -s 手机设备序列号/手机模拟器设备序列号 uninstall 已安装的应用报名

    保留配置和缓存文件卸载:adb -s 设备序列号 shell pm uninstall -k 已安装的应用包名

  

  5、adb pul,将 Android 设备上的文件或者文件夹复制到本地

    例如复制 Sdcard 下的 pull.txt 文件到 D 盘:    

adb pull sdcard/pull.txt d:/

    指定设备或者模拟器:adb -s 设备序列号 pull 手机上文件路径 电脑上的路径

    如果需要重命名为 rename.txt:

db pull sdcard/pull.txt d:/rename.txt
注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也是不错滴~~

  6、adb push,推送本地文件或文件夹至Android设备

    例如推送 D 盘下的 push.txt 至 Sdcard:

adb push d:/push.txt /sdcard/

    推送D盘下的“pass”文件夹至Sdcard:

adb -s 设备号 push d:/pass /sdcard/pass/

  

  7、adb shell命令

    安卓系统是基于Linux系统开发的,支持常见的linxu命令,这些命令都保存在手机的“/system/bin/”文件夹下,在该文件夹下能看到我们一些平时在应用linux系统时经常操作的指令,如"ls、cat、df、uptime、ps、kill"等。我们可以通过使用adb shell命令后直接加上相关的指定及其参数来执行这些指令

    例如:查看手机当前目录的所有内容,可以输入adb shell ls命令查看

    

    可以输入“exit”来退出“adb shell”提示符。回到windows命令行控制台

    

    有时候,我们可能关心手机上安装了哪些应用,可以使用adb shell命令来访问手机系统/data/data目录进行查看。提醒,在操作的过程中需要切换root用户

  具体操作如下:

adb shell
su root
cd /data/data
ls

    如果没有root,则会出现访问权限问题

    

  8、adb shell dumpsys battery,查看电池电量的相关信息

    

    各参数的含义:

      AC powered:false  表示是否连接电源供电,false也就是没有使用电源供电

      USB powered:true  表示是否使用USE供电,true是使用USB供电

      status:2  表示电池充电状态,这里2表示电池电量

      health:2  表示电池的健康情况,2表示电池的状态为良好

      present:true  表示手机上是否有电池,true表示有电池

      level:66  表示当前剩余的电量信息,66表示剩余电量为66%

      scale:100  表示电池电量的最大值

      voltage:4035  表示当前电池的电压,模拟器上的电压是0,这里我们手机上电池的电压为4035毫伏

      temperature: 310  表示当前电池的温度,它是一个整数值,310表示31.0度

      technology: Li-ion  表示电池使用的技术,z合理的Li-ion表示锂电池

  9、adb shell dumpsys WiFi,查看无线网络的信息

    运行该命令后输出信息内容很多,所以这里加入了“| more”参数,这样当输出信息在满一页时就暂停输出,若需要查看后续输出内容,就可以按空格继续显示下页内容,或者按Q键停止显示后续输出内容

    

  相关输出信息的含义:

    Wi-Fi is enabled:表示wifi的连接状态信息,安卓系统中,包含了5中wifi连接状态

      WIFI_STATE_DISABLED  wifi已关闭

      WIFI_STATE_DISBLING  WIFI正在关闭中

      WIFI_STATE_ENABLED  WIFI已启用

      WIFI_STATE_ENABLING  WIF正在启动中

      WIFI_STATE_UNKNOWN  未知WIFI状态

    Internal state:  在该部分罗列了一些关于wifi设备名称、wifi的名称,状态,IP地址,MAC地址,网络加密方式等信息

    如果需要查看后面的输出信息,单机空格键可进行查看

  10、adb shell dumpsys power,查看你电源管理的相关信息

    

    在进行移动测试自动化测试的或死后,有时候需要判断手机是否处于锁屏状态,以及根据手机的一些设置来决定其操作,比如手机设置的是5分钟不进行操作就关闭屏幕,我们在进行自动化脚本设计的时候,在长时间停顿后就需要判断其是否超过锁屏了时间,从而采取后续不同的操作,如果没超过改时间则就进行输入操作,而超过了这个时间则需要激活屏幕,锁锁定了屏幕还需要解锁,再进行响应的输入操作,这里的“mScreenOffTimeoutSetting=60000”,其值“60000”表示1分钟

过滤信息:
在windows可以加入“findstr”或者“grep”,在Linux中只能加入“grep”。
adb shell dumpsys power | findstr "mScreenOffTimeoutSetting"
就可以只输出屏幕个i鞍鼻时间的设置信息

  

  

  11、adb shell dumpsys telephony.registry,查看电话相关信息

  

  mCallState=0  表示呼叫状态,0表示待机状态;1表示来电尚未接听;2表示电话占线

  mCallIncomingNumber=  表示最近一次来电的电话号码

  mServiceState  表示服务的状态,0表示正常使用状态

  mSignalStrengt  表示信号强度

  mMessageWaiting  表示是否在等待无线电信息

  mCallForwarding  表示是否启用了呼叫转移

  mDataActivity  表示无线数据通话情况,0表示没有通话,1表示正在接受IP PPP信号,2表示正在发送IP PPP信号,3表示正在发送和接受IP PPP信号

  mDataConnectionState  表示无线数据连接情况,0表示无数据连接,1表示正在创建数据连接,2表示已连接,3表示已挂起状态,已经建好连接,但是IP数据通信暂时无法使用

  mDataConnectionPossible  表示是否有数据连接

  mDataConnectionReason  表示数据连接的原因

  mDataConnectionApn  表示APN,即接入点名称

  mDataConnectionLinkProperties  表示数据连接的链路属性

  mDataConnectionLinkCapabilities  表示数据链路连接的能力

  mCellLocation  表示基站相关信息

  registrations  表示登记记录计数

  12、adb shell cat /proc/cpuinfo,CPU硬件的相关信息

    安卓系统的“/proc”分区保存的系统各种实时信息,如CPU、内存等信息

  

  13、adb shell cat /proc/meminfo,查看内存的相关信息

    

  14、adb shell cat /proc/iomem,查看I/O内存分区的相关信息

    

adb命令(一)的更多相关文章

  1. Android之什么是Activity和常用的ADB命令以及Android项目结构的认识

    总结一下之前学习Android的一些内容 一:  Android常用的ADB命令(adb android调试桥)      1.adb devices   查看模拟器设备并重新连接. 2.adb ki ...

  2. 分享一个常用Adb命令

    分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...

  3. Android ADB命令大全

    通过ADB命令查看wifi密码.MAC地址.设备信息.操作文件.查看文件.日志信息.卸载.启动和安装APK等   ADB很强大,记住一些ADB命令有助于提高工作效率. 获取序列号: adb get-s ...

  4. Android的常用adb命令

    第一部分:1. ubuntu下配置环境anroid变量:在终端执行 sudo gedit /etc/profile 打开文本编辑器,在最后追加#setandroid environment2. 运行E ...

  5. ADB命令详解

    一.adb介绍 ADB的全称为Android Debug Bridge,字面意思就是安卓调试桥接,简单点说,它是Android系统提供的一套工具,通过它,我们可以在电脑上建立一个连接到手机的通道,然后 ...

  6. adb 命令

    adb命令 su 获取权限 ls 显示目录下的文件 cd / 跳转路径 pm 直接执行设备命令 exit 退出 adb devices 查看设备 adb shell 登录设备shell adb 用桥接 ...

  7. 在Mac上配置adb命令

    在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...

  8. python学习之——调用adb命令完成移动端界面测试

    实现原理 Hierarchy Viewer:获得当前手机实时的UI信息,方便用于手机的自动化测试: python中的subprocess.Popen():调用系统命令: uiautomator工具:获 ...

  9. 【转】】Android ADB命令大全

    ADB很强大,记住一些ADB命令有助于提高工作效率. 获取序列号: adb get-serialno 查看连接计算机的设备: adb devices 重启机器: adb reboot 重启到bootl ...

  10. Android测试——adb命令

    Adb (Android Debug Bridge)起到调试桥的作用. 通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序.adb采用监听Socket TCP 5554等端口 ...

随机推荐

  1. Servlet和JSP中的过滤器都是Java类

    JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...

  2. eclipse 导入maven 父子项目

    你先要确认svn上是否是maven项目,否则要自己重新建一个maven项目然后直接引入目录了.如果确认是maven项目,那么有个两个方案.案一:先用任何client软件将svn下载.然后在eclips ...

  3. Mac下python连接mysql数据库

    一.下载Mysql官方connector驱动 地址:https://dev.mysql.com/downloads/connector/python/ 根据提示安装.dmg文件即可. 二.验证是否安装 ...

  4. 转载:Python 包管理工具解惑

    Python 包管理工具解惑 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供m ...

  5. ios推送服务,php服务端

    本文转载至http://my.oschina.net/AStar/blog/176531   生成证书 证书生成参考:https://parse.com/tutorials/ios-push-noti ...

  6. 关于使用Tomcat服务器出现413错误的解决办法(Request Entity Too Large)

    解决的办法: 修改tomcat的配置文件C:/MinyooCMS/tomcat/conf/server.xml(或者安装在D盘文件路径是D: /MinyooCMS/tomcat/conf/server ...

  7. iOS GPUImage 滤镜介绍

    这里直接引用官方描述: The GPUImage framework is a BSD-licensed iOS library that lets you apply GPU-accelerated ...

  8. linux c编程:Posix共享内存区

    Posix共享内存区:共享内存是最快的可用IPC形式.它允许多个不相关(无亲缘关系)的进程去访问同一部分逻辑内存.如果需要在两个进程之间传输数据,共享内存将是一种效率极高的解决方案.一旦这样的内存区映 ...

  9. linux 中 开放端口,以及防火墙的相关命令

    最近公司需要在 生产环境上线系统,碰到一些防火墙以及开放端口的问题,在此来 复习mark下   1.设定   [root@localhost ~]# /sbin/iptables -I INPUT - ...

  10. CentOS iSCSI服务器搭建------Target篇

    先上服务器信息(当然是我YY的服务器.哈哈) [root@node ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@node ...