9.4.2 AAPT
AAPT是Andriod Asset Packaging Tool的缩写,是Aanriod应用资源打包工具,可以用AAPT工具构件APK文件,也可以用它来列出APK文件里面的详细信息,包括一些组文件与资源文件等AAPT存放在SDK的build-tools目录下,使用时需要在环境变量path中添加AAPT的路径。由于配置adb时添加了环境变量,也可以直接将aapt.exe文件复制到platform-tools目录下即可。介绍一下AAPT工具常用的子命令。
1、l-list
list列出应用程序*.apk包 的内容,命令格式:aapt list*.apk;
例子:aapt listD:\notepad.apk 显示notepad.apk 包里的内容。
一般apk里面的内容很多,最好用重定向把文件内容定向到一个文本文件里面,方便查看。如:aapt list D:\notepad.apk>D:\apk.txt
2、d-dump
dump查看apk基本信息命令格式:aapt d values*apk其中values的值可以选。
(1)badging
参数说明:列出应用的基本信息,包括包名package name、版本、应用名。
例子:查看lmageViewer.apk的基本信息命令:aapt d badging D:\mageViewer.apk.如果只想得到包名,可以用以下命令aapt d badging D:\tenson.apk findstr"package"通过这个发送得到包名是com.love-plusplus.demo.image。
(2)permissions
参数说明:查看apk的应用权限
例子:查看tenson.apk的权限,aapt d permissions D:\tenson.apk.
(3)configurations
参数说明:显示apk的配置信息,比如版本号,分辨率等信息。
例子:查看tenson.apk的配置信息,aapt d configurations D:\tenson.apk
(4)resources
参数说明:列出应用里面的资源信息
例子:查看tenson.apk的资源信息,aapt d resources D:\tenson.apk
3、其他参数
p-package:打包生成资源包
r-remove:从apk包里删除指定文件
a-add:添加文件到apk包中
这些参数相对测试基本上用不到,需要的可以上Android官网。
9.4.3 Monkey工具介绍
是Andriod中自带的一个命令行工具,可以运行在模拟器或设备中。它向系统发送伪随机的用户事件流(点击、触摸、手势等)实现对正在开发的应用程序进行压力测试。Monkey表面上运行在设备上,其实是在设备的终端中运行,运行Monkey命令前需要加上adb shell,也可以进入shell终端后直接输入命令运行。
Monkey包括许多选项,大致分以下4大类
1)基本的配置选项,如设置事件的数量
2)运行约束选项,如果设置只对单独的包进行测试
3)事件类型和频率,如点击事件和触屏事件占比多少以及事件之间的间隔时间等。
4)调试选项,如是忽略crashes、ANR等。
Monkey运行时会生成事件,并把信息发给系统;同时还对测试中的系统进行检测,对以下3种情况特殊处理。
1)可以指定一个或几个包上做测试
2)应用程序奔溃或接收到异常,可以指定命令让Monkey继续运行
3)应用程序无响应(ANR),Monkey会停止应用,可以指定命令让Monkey继续运行。
2、Monkey测试使用流程
Monkey是一个稳定性压力测试工具,通常是在功能测试完成之后,进行稳定性压力测试。其主要用来检测手机是否出现无响应、闪退、奔溃以及死机等。导致这些问题的主要原因就是内存泄露。Monkey测试的使用流程,如图9-7所示。

首先要利用命令或工具查看手机内存,然后运行Monkey命令,再次查看手机内存,如果出现递增现象,说明存在内存泄露,需要立即解决问题。此时可以借助DDMS来分析定位问题。
3、Monkey的基本使用
基本语法: adb shell monkey[选项]COUNT.。下面介绍Monkey的参数选项
-help查看monkey的帮助信息。在命令行输入命令:adb shell monkey-help其运行结果,如图9-8所示。
COUNT设置执行事件的次数。
例如:adb shell monkey 1000.
表示monkey模拟设备或模拟器上所有应用,随机执行1000次用户事件。
【基础参数】主要有-p、-v、-s、--throttle等。
(1)-p ALLOWED PACKAGE
参数说明:指定被测试的应用包名,monkey只允许启动包里的Activity,首先可以命令adb shell ls/data/data/来查看这些Activity。
例如:adb shell monkey-pcom.android.calendar 100.
表示monkey模拟器上的com.android.calendar应用,随机执行100次用户事件。
如果要指定多个包,需要使用多个-p选项,每个-p选项只能指定一个包。
(2)-v
参数说明:增加反馈信息的级别。共分以下3个级别
-v:Lecel 0:默认值,除启动提示、测试完成和最终结果外,提供较少信息。
-v-v:Lecel 1:提供信息的测试信息,如逐个发送应用Activity的事件。
-v-v-v:Lecel 2:需要详细的日志,包括测试中选中/未选中的Activity信息。
例子:adb shell monkey-pcom.freshO2O-v-v-v:100
命令中由3个V,显示信息的级别为Level 2.
(3)-s<seed>
参数说明:指定随机数的种子值seed,如果用相同的seed再次运行Monkey将生成相同的时间顺序如果不指定种子值,系统会随机生成一个种子值,在出现Bug时该种子值会和Bug信息一起被输出,这也是为了便于复现该Bug。
例子:adb shell monkey-pcom.android.music-s 10100
如果运行2次这个例子,最终运行结果是一样的。因为指定的随机种子值都是10,模拟的用户操作序列相同。所以操作序列是伪随机的。
(4)--throttle<ms>
参数说明:在事件(用户操作)之间插入固定延迟,单位是毫秒。通过这个选项可以减缓Monkey的执行速度。如果不指定这个选项,Monkey将不会被延迟。
例子:adb shell monkey-pcom.android.music--throttle 300100
说明:指定事件之间的延迟为300ms
【调试选项】主要有--ignore-crashes、--ignore-timeouts、--pkg-blacklist-file、--pkg-whitelist-file、--ignore-security-exceptions--monitor-native-crashes、--kill-process-after-error、--hprof等。
(1)--ignore-crashes
参数说明:用于指定当应用程序奔溃时(crash,或者FC),monkey是否停止运行。如果使用此参数,即使应用程序奔溃,Monkey依然会发送事件,直到事件计数完成。
例子:adb shell monkey-pcom.android.settings--ignore-crashes 1000
表示在测试过程中,即使settings程序奔溃,monkey依然会继续发送事件,直到事件数目达到1000为主。
(2)--ignore-timeouts
参数说明:用于指定当应用程序发生ANR(应用程序没有相应)时,monkey是否停止运行。如果使用此参数,即使使用程序发生ANR错误,monkey依然会发送事件,直到事件计数完成。
例子::adb shell monkey-pcom.android.settings--ignore-timeouts 1000
表示在测试过程中,即使应用程序无响应,monkey依然会继续发送事件,直到事件数目达到1000为主。
(3)--ignore-security-exceptions
参数说明:用于指定应用程序发生许可错误时(如证书许可、网络许可等)monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,monkey依然会发送事件,直到事件计数完成。
adb shell monkey-pcom.android.music--ignore-security-exceptions 1000
表示在测试过程中,如果应用程序发生许可错误,monkey依然会继续发送事件直到事件数目达到1000为止。
(4)--pkg-blacklist-file PACKAGEBLACKLIST FILE
参数说明:设置应用测试黑名单,黑名单设置里面的应用包不参与测试。
使用方法:在--Pkg-blacklist-file后面跟的是文件的路径,这个文件里面保存的就是没有参与测试的应用列表,需要把这个文件push到设备或模拟器后,才可以进行测试。这个选项一般用来测试手机整机的稳定性。
(5)--pkg-whitelist-file PACKAGEWHITELIST FILE
参数说明:设置测试白名单,只有这些应用可以参与测试,如果采用测试的应用包很多,可以把这些应用包放到一个文件里面,用设置白名单的方法进行测试。
(6)-monitor-native-crashes
参数说明:用于指定是否监视并报告应用程序发生奔溃的本地代码。如果应用本身带有本地的代码库,可以带上这个参数。
例子:adb shell monkey-pcom.android.calendar-monitor-native-crashes 1000
表示在测试过程中,如果calendar应用程序本身带有本地代码库,monkey会在显示信息中报告本地代码。