APP专项测试之ADB常用命令

ADB常用命令

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,获取设备列表及设备状态 

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

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

device:设备正常连接  

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

unknown:没有连接设备

3.安装卸载应用程序  

adbinstall用于安装

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

安装失败,会返回以下:  

INSTALL_FAILED_ALREADY_EXISTS  

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

INSTALL_FAILED_SIGNATURE_ERROR  

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

INSTALL_FAILED_INSUFFICIENT_STORAGE  

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

adbuninstall用于卸载  

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

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

adbshellpmlistpackages–f

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盘 

5.adbshellpmlistpackage 

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

-s:列出系统应用  

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

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 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,841评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,415评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,904评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,051评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,055评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,255评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,729评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,377评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,517评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,420评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,467评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,144评论 3 317
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,735评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,812评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,029评论 1 256
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,528评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,126评论 2 341