Adb shell命令
adb是一个C/S架构的命令行工具,主要由3部分组成
- PC端Client: 发送命令给server,对Android设备进行调试
- PC端server:管理客户端与Android设备的通信,即adb.exe
- 手机端daemon:运行在手机的后台守护进程
Monkey简介
- monkey简介:参照我之前的文章
Monkey命令基本参数介绍
adb shell monkey
- -p <包名列表>
- 此参数指定一个或多个包,指定包名后,monkey只会启动相应的app, 如果未指定包名,monkey允许系统启动所有的app
- 获取包名 adb shell pm [ package manager] list package -3[列出来第三方包名]
- eg:
启动一个应用:adb shell monkey -p + 包名
启动多个应用:adb shell monkey -p + 包名 -p + 包名
- -v 指定日志级别
- -v -v -v: 表示最高级别,日志详细, adb shell monkey -p 包名 -v -v -v
- -s 随机事件的种子数,种子数目项目则生成相同随即操作序列
- 可以理解为monkey的编号,会根据编号执行测试时各种动作所占的百分比
- monkey是一个伪随机测试,原因在于两次测试选择同一个seed值,执行的动作是一致的,可以使用相同的seed的值来复现bug
- –throttle 设置操作之间的延时
- COUNT执行次数(唯一的必须属性)
导出Monkey日志
- adb shell monkey -p 包名 -v -v -v 300 > 保存日志文件路径即可
处理Android Log文件
产生log的条件
- 程序异常退出
- 程序强制关闭
- 程序无响应
- 手动生成
抓取日志信息
- 命令: adb logcat -参数
| adb logcat命令参数 | 意义 |
| — | — |
| -s | 设置输出日志 :s的标签, 只显示该标签的日志 |
| -f | 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功 |
| -r | 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功 |
| -n | 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样 |
| -v | 设置日志的输出格式, 注意只能设置一项 |
| -c | 清空所有的日志缓存信息 |
| -d | 将缓存的日志输出到屏幕上, 并且不会阻塞 |
| -t |输出最近的几行日志, 输出完退出, 不阻塞 |
| -g |查看日志缓冲区信息 |
| -B |以二进制形式输出日志 | - 一般在跑完mobnkey之后使用adb logcat -v time > 保存日志文件路径,进行日志的抓取
日志文件的组成
- 系统的基本信息:包括内存,CPU,进程队列,虚拟内存,垃圾回收等
- 时间信息:主要需要分析的信息
- 虚拟机信息,包括进程和新城的跟踪信息
快速定位问题
问题 | 操作 |
ANR | 搜索"ANR " 注意有一个空格,空格是为了屏蔽一些无关紧要的anrlog信息 |
Crash | 搜索"Fatal" |
虚拟机 | 搜索Dalvik Thread |
- 一般来说日志的分析可以帮助我们快速的定位问题出现的原因,可以帮助我们快速的解决问题