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

  • 一般来说日志的分析可以帮助我们快速的定位问题出现的原因,可以帮助我们快速的解决问题