找包名
直接获得目前打开的app的包名以及启动页(Activity)
adb shell dumpsys window w |findstr \/ |findstr name=
还可以去读文件获取包名
路径 data/app 第三方安装的app
用adb命令快速查看某应用appPackage及appActivity的方法
1> adb shell pm list packages 列出所有的包名(不知道包名的情况,需要执行查找包名)appPackage
注:加上-3显示第三方安装的安装包
2> adb shell dumpsys package XXX 查看某个包的具体信息(前提是需要知道包名是什么) appActivity
3> adb shell dumpsys activity | grep mFocusedActivity 查看当前resume的是哪个activity
4> adb logcat | grep ActivityManager 查看当前正在运行的Activity
5> adb logcat | grep Displayed 查看当前正在运行的Activity
monkey 指令及用法
monkey常用参数
-p 指定包名 (所有命令都在此包内执行,如不指定,则在整个系统内执行)
-v log详细程度(最高支持’-v -v -v’最详细)
-s 种子 (指定种子后,同一条命令在任意时间、地点的执行顺序都相同)
--throttle 单步延时(每步操作间隔,单位毫秒)
--kill-process-after-error 出错时杀掉进程
--ignore-timeouts 忽略超时错误
--ignore-security-exceptions 忽略许可错误
基本参数 | 说明 |
-p <allowed-package-name> | 指定一个或多个包 |
-s <seed> | 指定一个随机数生成器的seed值 |
--throttle <milliseconds> | 指定事件之间的固定延迟(ms) |
-v | 指定反馈信息级别(信息级别就是日志的详细程度) |
-c <main-category> | 指定一个或多个类别名 |
-f <scriptfile> | 运行指定的monkey脚本 |
事件参数 | 说明 |
--pct-touch <percent> | 指定触摸事件百分比 |
--pct-motion <percent> | 指定动作事件百分比 |
--pct-trackball <percent> | 指定轨迹事件百分比 |
--pct-syskeys <percent> | 指定系统按键事件百分比 |
--pct-nav <percent> | 指定基本导航事件百分比 |
--pct-majornav <percent> | 指定主要导航事件百分比 |
--pct-appswitch <percent> | 指定应用启动事件百分比 |
--pct-flip <percent> | 指定flip(弹)事件的百分比 |
--pct-anyevent <percent> | 指定其他类型事件百分比 |
--pct-pinchzoom <percent> | 指定缩放(捏)事件百分比 |
--pct-permission <percent> | permission 事件的百分比,默认为0,Android6.0及以后的手机才有这个参数 |
调试参数 | 说明 |
--ignore-crashes | 忽略因崩溃或异常引起的停止运行 |
--ignore-timeouts | 忽略应用发生超时错误(ANR) |
--ignore-security-exceptions | 忽略应用发生任何权限错误 |
--monitor-native-crashes | 监视并报告monkey运行时native code的崩溃事件 |
--ignore-native-crashes | 忽略因native code的崩溃事件 |
--kill-process-after-error | 在应用出错后通知系统杀死发生错误的进程 |
--hprof | 在事件序列前后立即生成profilfing report |
--dbg-no-events | 监视应用程序所调用的包之间的转换 |
--wait-dbg | 暂停执行中的monkey,直到有调试器与它连接 |
举例:
adb shell monkey -p com.motk -v -v -v -s 12 --throttle 5001000
日志分析
1、查找出差步骤:
a、找到monkey里哪个地方出错
查看Monkey执行的是哪一个Activity,在switch后面找,两个swtich之间如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。
b、查看Monkey里面出错前的一些事件动作,手动执行该动作
Sleeping for XX milliseconds这是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件,
Sending XX 就是代表一个操作,如下图的两个操作 应该就是一个点击事件。
c、若以上步骤还不能找出,则可以使用之前一样的seek再执行monkey命令一遍,便于复现
2、测试结果分析:
a、程序无响应,ANR问题:在日志中搜索“ANR”
b、崩溃问题:在日志中搜索“CRASH”
c、其他问题:在日志中搜索”Exception”