adb 及 monkey 常用命令

adb 及 monkey 常用命令

一、adb 常用命令

  • 何为 adb?

    • adb (Android Debug Bridge) 是 android 的一个工具。
    • adb 是用来连接安卓手机和 PC 端的桥梁,要有 adb 作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作。
    • Android 的初衷是用 adb 这样的工具来协助开发人员在开发 Android 应用的过程中更快更好的调试 apk ,因此 adb 具有安装卸载 apk 、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行 shell 命令等功能。
  • adb 组成

    • 客户端 client :运行在你的电脑上,你可以通过 shell 来调用起一个客户端。其他的 Android 工具,例如 ADT 插件、 DDMS 都可以创建出一个客户端
    • 服务器 server :运行在你电脑的后台,负责管理 client 和 daemon 进行通信。
    • 守护进程 daemon : 运行在模拟器或者 Android 设备的后台。
    • 验证:打开 Windows 命令行,输入 adb 命令
  • adb 常见命令

    • adb --help 查看帮助手册。

    • adb devices 检测连接到电脑的安卓设备,这个是我们会经常用到的检测命令。

    • adb logcat 打印 log 日志信息。

      • adb logcat > d:/test.log 将 log 信息保存到本地路径
      • 输入 "adb logcat" 命令出现 "waiting for device" 信息被挂起时一般需要重新启动服务
        • adb kill server
        • adb start server
    • adb pull <手机路径> <本机路径> 从手机中拉取信息放到本地电脑上。

    • adb push <本机路径> <手机路径> 从本地推送信息到手机上去。

    • adb shell 登录设备 shell (命令行的人机界面),pwd ll ls exit 等命令都可以用,进入到 Linux 命令了,相当于执行远程命令。

    • adb install xxx.apk 安装应用,为了获取 apk 的安装包所在地址,可以直接把 apk 拖到 cmd 的窗口,apk 路径不建议包含中文,一般放到桌面。返回 success 就说明安装成功了。

    • adb uninstall com.tencent.mobileqq 卸载应用

    • adb shell 进入设备shell

      • adb -s 设备名 shell 进入指定设备shell
    • adb shell dumpsys activity | find "mFocusedActivity" 看前台应用包名

      • 应用包名一般从 com.开始到第一个 ‘/’ 之前的内容
    • adb connect / disconnect 通过 WiFi 进行远程连接手机进行调试

      • 这里使用 WiFi 连接的话手机需要 root ,没有 root 只能使用数据线连接。
  • adb shell 目录结构

    adb shell 进入 Linux 命令行模式

    • system 分区
    • data 分区
    • sdcard 分区
  • logcat 日志文件

    • Android 日志系统提供了记录和查看系统调试信息的功能,日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用

      使用方式:

      ​ [adb] logcat [<option>] ... [<fiter-spec>]...

    • logcat 是以 "---------- beginning of xxx" 开头的

    • 开发者选项,有个选项叫做 “日志记录器缓冲区大小”,默认是 256K,日志是循环写入环形缓冲区的。在通常情况下,写满时最旧的日志会被删除以给新输出的日志留内存空间。

二、monkey 常用命令

  • monkey 应用场景

    • Monkey 测试是 Android 平台自动化测试的一种手段,通过 Monkey 程序模拟用户触摸屏幕、滑动 Trackball 、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。
    • monkey 是命令行工具
    • monkey 用来做什么?
      • 可以用来做压力测试也可以用来做自动化测试。
    • monkey 什么时候用?
      • 等你们的产品稳定了,没有特别多的 bug 的时候,一般会用 monkey 去测试待测应用的稳定性、健壮性(是否会发生闪退、崩溃);整机测试。
  • monkey 命令格式

    • adb [-s 设备名] shell monkey -p com.tencent.mm --ignore-crashes --ignore-timeouts --throttle 400 -v -s 3500 100000 > D:monkey_log.txt
    • 启动安卓模拟器/真机
    • 点击运行--输入 cmd --进入命令行界面
    • 查看设备连接情况 adb devices
    • 在命令行界面输入 monkey 命令
    • 如果 monkey 需要指定设备,基本语法如下:
      • adb -s [device] shell monkey [options]
  • monkey 常见参数

    • -p :

      • 用于约束限制,用此参数指定一个或多个包(Package ,即 App 名字)。指定指定包之后,monkey 将只允许系统启动指定的 App。如果不指定包,monkey 将允许系统启动设备中的所有 App 。
      • 命令:adb shell monkey -p com.tencent.edu 1000
      • 说明:com.tencent.edu 为包名,1000 是事件计数(即让 monkey 程序模拟1000次随机用户事件)
      • adb shell monkey 1000 这个命令是让 monkey 对整个系统进行随机测试
      • 如果要启动多个包,使用: -p 包名 -p 包名
    • -s :

      • 用于指定伪随机数生成器的 seed 值,如果 seed 相同,则两次 monkey 测试所产生的事件序列也是相同的。

      • 命令:

        monkey 测试1:adb shell monkey -p com.tencent.edu -s 101 100 提前指定

        monkey 测试2:adb shell monkey -p com.tencent.edu -s 101 100

      • 说明:

        两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的seed 值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列是伪随机的。

      • 这个 -s 是在最后事件计数的前面,和 adb -s [device] 要区分开来,-s [device] 一定要放在开始 adb 的后面表示指定设备。

    • -v :

      • 用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别

      • -v :日志级别 Level0 初级

        说明:缺省值,仅提供启动提示、测试完成和最终结果等少量信息

      • -v -v :日志级别 Level1 中级

        说明:提供较为详细的日志,包括每个发送到 Activity 的事件信息

      • -v -v -v :日志级别 Level2 高级

        说明:最详细的日志,包括了测试中选中/未选中的 Activity 信息

      • 命令:adb shell monkey -p com.tencent.edu -v 100

    • --throttle <毫秒> :

      • 用于指定用户操作(即事件)间的延时,单位是毫秒;
      • 命令:adb shell monkey -p com.tencent.edu --throttle 3000 100
    • --randomize-throttle :

      • 在事件之间插入随机延迟,随机延迟范围为 0 到 throttle 设置的时间,单位为毫秒。
      • 命令:adb shell monkey -p com.tencent.edu --throttle 5000 --randomize-throttle 100
      • 说明:执行 100 次monkey 随机事件,每次事件的间隔在 0 到 5000 毫秒之间不固定
    • --pkg-whitelist-file : 白名单包名,后面接 txt 文件

      • 第一步把你设置的白名单的包名写到一个 txt 文档里面,记得路径和文档名字都是英文!

        D:whitelist.txt

      • 第二步把这个文件拉到我们的安卓机中去,放到 /data/local/tmp 下面

        adb push D:whitelist.txt /data/local/tmp 注意这两个斜杠不一样

      • 命令:adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt 100

    • --pkg-blacklist-file : 黑名单包名,后面接 txt 文件

      • 命令:adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt 100
      • 黑白名单的命令不能同时用,每次只能用一个。
    • --ignore-timeouts :

      • 通常,应用程序发生任何超时错误(如:“Application Not responding” 对话框)monkey 将停止运行,设置此项,monkey 将继续发送事件给系统,直到事件计数完成。
      • 命令:adb shell monkey -p com.tencent.edu --ignore-timeouts 100
    • --ignore-crashes :

      • 通常,应用程序发生崩溃或异常时 monkey 将停止运行,如果设置此项,monkey 将继续发送事件给系统,直到事件计数完成。
      • 命令:adb shell monkey -p com.tencent.edu --ignore-crashes 100
    • --ignore-security-exception

      • 通常,当程序发生许可错误(例如启动一些需要许可的 Activity )导致的异常时,monkey 将停止运行,设置此项,monkey 将继续发送事件给系统,直到事件计数完成。
      • 命令:adb shell monkey -p com.tencent.edu --ignore-security-exception 100
  • monkey 常见参数-百分比事件

    • --pct-touch :
      • 调整触摸点击事件的百分比,down-up ,编号为0。
      • 触摸点击事件是一个 down-up 事件,它发生在屏幕上的某单一位置。
    • --pct-motion :
      • 调整移动事件的百分比,直线滑动,编号为1。
    • --pct-pinchzoom :
      • 调整两指缩放压缩手势的百分比,比如放大缩小手势操作,编号为2。
    • --pct-trackball :
      • 调整轨迹球事件百分比,不常用,编号为3。
      • 现在的手机几乎没有滚动球,但滚动球事件中包含曲线滑动事件,在被测程序需要曲线滑动时可以选用此参数。
    • --pct-rotation :
      • 调整旋转事件的百分比,横屏竖屏,编号为4。
    • --pct-nav :
      • 调整导航事件的百分比,编号为5。
      • 包括上下左右,如方向输入(设备的输入),老手机的上下左右键,智能机上没有。
    • --pct-majornav :
      • 调整主要导航事件的百分比,编号为6。
      • 例如 中间键、回退键、菜单键。
    • --pct-syskeys :
      • 调整“系统”按键事件百分比,编号为7。
      • 这些按钮一般专供系统使用,如:Home,Back,Start Call , End Call ,音量控制。
    • --pct-appswitch :
      • 调整 app 切换事件的百分比,编号为8。
    • --pct-flip :
      • 调整键盘换出隐藏的百分比,编号为9。
    • --pct-anyevent :
      • 调整除上面事件外,其他事件的百分比,编号为10。
      • 如:按键、其他在设备上不常用的按钮等。
    • 命令格式:
      • adb shell monkey {事件参数} 事件次数
    • 命令:
      • adb shell monkey -p com.tencent.mm --pct-touch 10 --pct-rotation 40 -v -v -v 100
原文地址:https://www.cnblogs.com/duncan1863/p/13941459.html