针对移动端 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. ubuntu 下使用polipo转换HTTP代理

    ***默认是用Socks5协议的,对于Terminal的get,wget等走http协议的地方是无能为力的,所以需要转换成http代理,加强通用性,这里使用的转换方法是基于Polipo的. sudo ...

  2. Spring Cloud 微服务二:API网关spring cloud zuul

    前言:本章将继续上一章Spring Cloud微服务,本章主要内容是API 网关,相关代码将延续上一章,如需了解请参考:Spring Cloud 微服务一:Consul注册中心 Spring clou ...

  3. 解决Java工程URL路径中含有中文的情况

    问题: 当Java工程路径中含有中文时,得不到正确的路径 *** 解决: 这其实是编码转换的问题.当我们使用ClassLoader的getResource方法获取路径时,获取到的路径被URLEncod ...

  4. wordpress 获取分类ID,分类标题,分类描述,分类链接url函数

    get_cat_ID()    根据分类名称获取分类ID   ///// get_cat_name()    根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...

  5. RabbitMQ与Redis做队列比较

    本文仅针对RabbitMQ与Redis做队列应用时的情况进行对比 具体采用什么方式实现,还需要取决于系统的实际需求简要介绍RabbitMQRabbitMQ是实现AMQP(高级消息队列协议)的消息中间件 ...

  6. 九度OJ 1000:计算a+b

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:35767 解决:15660 题目描述: 求整数a,b的和. 输入: 测试案例有多行,每行为a,b的值. 输出: 输出多行,对应a+b的结果. ...

  7. html/css背景图片自适应分辨率大小

    <style type='text/css'> .bgbox { position: absolute; left: 0; top: 0; width: 100%; overflow: h ...

  8. 【足迹C++primer】32、定制操作_1

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/32066151 定制操作 向算法传递函数 ...

  9. 【oracle案例】ORA-01722

    1.1.   ORA-01722 日期:2014-06-05 14:09 环境:測试环境   [情景描写叙述] 在数据库的升级过程中,运行SQL> @?/rdbms/admin/catupgrd ...

  10. 文件传输协议FTP

    之前已经了解了TCP/IP这种低级别的协议,还有一些网络协议包括文件传输(FTP,STP).阅读Usenet新闻组(NNTP).电子邮件发送(SMTP).从服务器上下载电子邮件(POP3.IMAP)等 ...