运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

APP专项测试之ADB常用命令

运维开发网 https://www.qedev.com 2020-08-06 12:54 出处:51CTO 作者:szchuanshi
ADB简介Adb的全称为AndroidDebugBridge:android调试桥梁,可以看出,Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能;我们可以在androidsdk安装目录的platform-tools目录下找

ADB简介

Adb的全称为AndroidDebugBridge:android调试桥梁,可以看出,Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能;我们可以在androidsdk安装目录的platform-tools目录下找到adb工具;现有安卓系统的权限机制越来越完善,很多希望能够绕开权限管理机制进行的一些操作都已经无法使用,但是Adb却可以实现。实际上Adb在某种程度上有很大权限的,即使是在最新版本的Android系统上。因为Adb的设计初衷是为了方便开发人员调试,因此必然需要暴露一些权限以外的接口。于是很多公司利用这个特性可以绕开权限机制在非Root非定制机上做一些操作(具体用法就是下面说的这些),当然方式也是五花八门,比如通过手机OTG连接,这里不再赘述了。

ADB三大组件

为了方便理解,我们从三个指令入手,我们经常会用到

adbstart-server

adbdevices,adbkill-server

然后我们经常会看到这样的输出界面:

C:\Users\dell>adbdevices

Listofdevicesattached

daemonnotrunning.startingitnowattcp:5037

daemonstartedsuccessfully

于是这里有三点疑问,为什么是server,server对应的是服务器或者服务端吧?如果手机是客户端,服务端是不是指电脑上开启的服务。还有这个呆萌(daemon)又是啥?ADB是一个C/S架构的应用程序,由三部分组成:

1.运行在pc端的adbclient:

命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adbserver建立连接后adbclient就可以向ADBservcer发送服务请求;

2.运行在pc端的adbserver:

ADBServer是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADBServer还需要将adbclient的请求通过usb或者tcp的方式发送到对应的adbd上;

3.运行在设备端的常驻进程

adbdemon(adbd):

程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。

ADB常用命令

1.adbdevices,获取设备列表及设备状态

APP专项测试之ADB常用命令

2.adbget-state,获取设备的状态

APP专项测试之ADB常用命令

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

device:设备正常连接

offline:连接出现异常,设备无响应

unknown:没有连接设备

3.安装卸载应用程序

adbinstall用于安装

APP专项测试之ADB常用命令

安装成功,返回成功提示"Success";

安装失败,会返回以下:

INSTALL_FAILED_ALREADY_EXISTS

此时需要用-r参数来重新安装。

INSTALL_FAILED_SIGNATURE_ERROR

应用的签名不一致,可能是发布版和调试版签名不同所致。也有可能是没卸载旧应用导致。

INSTALL_FAILED_INSUFFICIENT_STORAGE

存储空间不足,需要检查设备存储情况。

adbuninstall用于卸载

adbuninstall后面带的是应用的包名,而不是应用名。

查看系统所有应用的包名:

adbshellpmlistpackages–f

APP专项测试之ADB常用命令

4.上传、下载文件

adbpush命令将PC机上的文件推到DLT-RK3288机器上;

adbpull命令将DLT-RK3288机器上的文件拉到PC机上;

例如:

adbpushd:/new.txt/sdcard/

将D盘下new.txt文件到内部存储器

adbpull/sdcard/new.txtd:\将DLT-RK3288内部存储器根目录下的new.txt拉到D盘

APP专项测试之ADB常用命令

5.adbshellpmlistpackage

PackageManager,可以用获取到一些安装在Android设备上的应用信息

-s:列出系统应用

-f:列出应用包名及对应的apk名及存放位置

APP专项测试之ADB常用命令

6.adbshell

通过adbshell命令,就可以进入设备或者模拟器的shell环境了,在这个Linuxshell中,我们就可以执行各种Linux命令了。

如果只想执行一条shell命令,就可以采用:adbshell[shell_command],在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。

7.常见命令:

如ls,cd,rm,mkdir,touch,pwd,cp,mv,ifconfig,netstat,ping,ps,top等,进入adbshell即可执行,与Linux相似

8.adblogcat

A.在cmd窗口查看手机的Log日志

有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志。在cmd窗口中输入如下命令:

//格式1:打印默认日志数据

adblogcat

//格式2:需要打印日志详细时间的简单数据

adblogcat-vtime

//格式3:需要打印级别为Error的信息

adblogcat:E

//格式4:需要打印时间和级别是Error的信息

adblogcat-vtime:E

//格式5:将日志保存到电脑固定的位置,比如D:\log.txt

adblogcat-vtime>D:\log.txt

这时手机日志更新什么日志,cmd窗口也会同步更新数据。

但是这样没有过滤条件,如果Log日志很多,很难找到我们想要的信息,

当然也可以复制cmd中的数据到一个文本中慢慢处理的,就是效率不高。

下面介绍adblogcat中的详细参数命令以及如何才能高效的打印日志,或者把日志保存到我们指定的位置。

B.adblogcat详解

adblogcat如果用过,但是具体命令又不记得,可以输入adblogcat-help,查看一下一些简单的数据格式日志过滤:adblogcat<tag>[:priority]

tag表示标签,priority输出的级别,日志默认级别是V,如果错误日志我们选择E就可以。

Android的日志分为如下几个优先级(priority):

V——Verbose(最低,输出得最多)

D——Debug

I——Info

W——Warning

E——Error

F——Fatal

S——Silent(最高,啥也不输出)

按某级别过滤日志则会将该级别及以上的日志输出。比如,命令:adblogcat:W

其实可以是某个tag,如果没有指明,就表示所有。

tag可以由多个[:priority]组成。比如,命令:

adblogcatActivityManager:IMyApp:D:S

表示输出tagActivityManager的Info以上级别日志,输出tagMyApp的Debug以上级别日志,及其它tag的Silent级别日志(即屏蔽其它tag日志)。

adblogcat选项解析

--"-s"选项:设置输出日志:s的标签,只显示该标签的日志;

--"-f"选项:将日志输出到文件,默认输出到标准输出流中,-f参数执行不成功;

--"-r"选项:按照每千字节输出日志,需要-f参数,不过这个命令没有执行成功;

--"-n"选项:设置日志输出的最大数目,需要-r参数,这个执行感觉跟adblogcat效果一样;

--"-v"选项:设置日志的输出格式,注意只能设置一项;

--"-c"选项:清空所有的日志缓存信息;

--"-d"选项:将缓存的日志输出到屏幕上,并且不会阻塞;

--"-t"选项:输出最近的几行日志,输出完退出,不阻塞;

--"-g"选项:查看日志缓冲区信息;

--"-B"选项:以二进制形式输出日志;

把日志信息保存到电脑中

adblogcat最后添加”>保存文件的地址,比如需要将的信息保存到电脑中使用下面的命令:adblogcat-vtime>D:\log.txt

monkey测试

Monkey测试简介

Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压

Monkey命令的简单帮助

要获取Monkey命令自带的简单帮助,在CMD中执行命令:

adbshellmonkey–help

Monkey命令参数介绍

说明:第一个-s指定设备,如果只连接了一台设备,可不用该参数。

-p<apk包名>只允许系统启动指定的app,如果不指定,将允许系统启动设备中的所有app,也可指定多个包。

--throttle<毫秒数>指定用户操作(事件)间的时延。

--ignore-crashes指定当应用程序崩溃时,Monkey依然发送事件,直到事件计数完成。

--ignore-timeouts当应用程序发生ANR错误时,Monkey依然会发送事件,直到事件计数完成。

第2个-s,用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

-v用于指定反馈信息级别,总共分为level0、level1、level2三个级别,级别越高,输出的日志越详细。

日志级别Level0示例

adbshellmonkey-pcom.amaker.mp–v100

说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别Level1示例

adbshellmonkey-pcom.amaker.mp–v-v100

说明提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别Level2示例

adbshellmonkey-pcom.amaker.mp–v-v–v100

说明最详细的日志,包括了测试中选中/未选中的Activity信息

最后的数字(这里是500):表示Monkey程序模拟500次随机用户操作事件。

输出测试结果到D:\monkeylog.txt

扫码领视频副本.gif

0

上一篇:

:下一篇

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号