adb命令

Posted 会跑的熊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adb命令相关的知识,希望对你有一定的参考价值。

针对移动端 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命令的主要内容,如果未能解决你的问题,请参考以下文章

Android命令截屏srenncap pc 端adb截图成功,但是用代码执行为空白图

怎么在Android Studio中执行adb命令

手机adb命令怎么使用

Android java代码执行ADB命令启动Activity

如何在android应用里执行adb 命令

Android 代码中执行adb shell命令