Android monkey命令和monkey脚本详解

Monkey命令

monkey 是 Android 平台上一个非常有用的工具,它可以帮助开发者在设备上生成随机的用户事件流,如按键输入、触摸屏手势等,以此来测试应用的稳定性。这对于发现应用中的崩溃、异常和性能问题特别有用。

基本语法

bash 复制代码
adb shell monkey [OPTIONS] <EVENT-COUNT>

选项说明

  • <EVENT-COUNT>:要发送的伪随机事件数量。
  • --throttle <MILLISECONDS>:每个事件之间等待的毫秒数。
  • --pct-[event-type] <percentage> :设置特定事件类型的百分比。例如:
    • --pct-motion: 触摸屏幕运动事件
    • --pct-trackball: 轨迹球事件
    • --pct-nav: 导航键事件
    • --pct-majornav: 主导航键(如返回、主页)事件
    • --pct-syskeys: 系统键(如音量键)事件
    • --pct-appswitch: 应用切换事件
    • --pct-flip: 屏幕翻转事件
    • --pct-anyevent: 任何事件
  • --ignore-[event-type] :忽略特定类型的事件。例如:
    • --ignore-crashes: 忽略崩溃
    • --ignore-timeouts: 忽略超时
    • --ignore-security-exceptions: 忽略安全异常
    • --ignore-native-crashes: 忽略本地代码崩溃
    • --ignore-anr: 忽略无响应状态
  • --kill-process-after-error:如果发生错误,则终止进程。
  • --monitor-native-crashes:监控并报告原生代码崩溃。
  • --pkg-blacklist-file <file>:指定包含不应启动的应用包名黑名单文件。
  • --pkg-whitelist-file <file>:指定包含应该启动的应用包名白名单文件。
  • --category-blacklist <category>:指定不应启动的 Intent 类别黑名单。
  • --category-whitelist <category>:指定应启动的 Intent 类别白名单。
  • --only-current: 只在当前应用中运行。
  • --hprof: 生成 hprof 文件以进行内存分析。
  • --dbg-level <level>: 设置调试级别 (0-3)。
  • --seed <value>: 设置随机种子值,以便可以重现测试序列。

示例

假设你想让 Monkey 运行 1000 次事件,其中 50% 是触摸屏幕事件,20% 是导航键事件,并且在每个事件之间等待 500 毫秒,你可以使用以下命令:

bash 复制代码
adb shell monkey --pct-motion 50 --pct-nav 20 --throttle 500 1000

注意事项

  • 在运行 Monkey 测试之前,请确保备份好数据,因为它可能会导致数据丢失或混乱。
  • 如果你的应用需要特定的权限,你可能需要先授予这些权限。
  • 通常,Monkey 测试会在设备上运行,所以确保设备连接到电脑并且开启了 USB 调试模式。

Monkey脚本

Monkey 脚本是一种用于自动化 Android 设备上的随机事件生成的方法,这有助于测试应用程序的稳定性和健壮性。下面是一个简单的 Monkey 脚本示例,以及如何创建和执行这样的脚本。

示例脚本

我们将创建一个简单的 Bash 脚本来运行 Monkey 测试。这个脚本会自动执行一系列 Monkey 操作,并记录输出。

创建脚本文件

首先,在你的计算机上创建一个新的 Bash 脚本文件。你可以使用任何文本编辑器来创建这个文件。这里我们命名为 run_monkey.sh

bash 复制代码
#!/bin/bash

# 定义变量
PACKAGE_NAME="com.example.myapp"
EVENT_COUNT=5000
THROTTLE_TIME=500
SEED=12345

# 输出 Monkey 的命令行帮助信息
echo "Running Monkey Test..."

# 运行 Monkey 命令
adb shell "monkey --package $PACKAGE_NAME \
            --throttle $THROTTLE_TIME \
            --pct-motion 50 \
            --pct-nav 20 \
            --pct-majornav 10 \
            --pct-syskeys 10 \
            --pct-appswitch 5 \
            --pct-flip 5 \
            --ignore-crashes \
            --ignore-timeouts \
            --ignore-security-exceptions \
            --kill-process-after-error \
            --monitor-native-crashes \
            --randomize-throttle \
            --seed $SEED \
            $EVENT_COUNT"

# 检查输出
echo "Monkey test finished. Checking the output..."

解释脚本

  • PACKAGE_NAME: 指定你要测试的应用程序的包名。
  • EVENT_COUNT: 指定 Monkey 要执行的事件总数。
  • THROTTLE_TIME: 指定每个事件之间的延迟时间(毫秒)。
  • SEED: 指定随机种子,这样你可以重现相同的测试序列。
  • adb shell: 通过 ADB 向设备发送命令。
  • --package: 限制 Monkey 事件只作用于指定的应用包。
  • --throttle: 设置事件之间的延迟时间。
  • --pct-*: 设置各种事件类型的百分比。
  • --ignore-*: 设置 Monkey 忽略某些类型的错误。
  • --kill-process-after-error: 如果发生错误则停止该应用。
  • --monitor-native-crashes: 监控并报告原生代码崩溃。
  • --randomize-throttle: 随机化事件之间的延迟时间。
  • --seed: 设置随机种子。

执行脚本

为了执行这个脚本,你需要确保你的设备已经连接到电脑并通过 ADB 进行调试。此外,你需要给予脚本执行权限,并且在终端中运行它。

  1. 给脚本执行权限:

    bash 复制代码
    chmod +x run_monkey.sh
  2. 运行脚本:

    bash 复制代码
    ./run_monkey.sh

注意事项

  • 确保你的设备已经连接到电脑,并且开启了 USB 调试模式。
  • 如果你在运行脚本时遇到权限问题,尝试使用 sudo 或者将脚本放在具有适当权限的目录下。
  • 根据你的需求调整脚本中的参数,比如事件数量、事件类型比例等。

这就是一个基本的 Monkey 测试脚本。你可以根据自己的需要对其进行扩展和修改。

相关推荐
zhangphil3 小时前
Android绘图Path基于LinearGradient线性动画渐变,Kotlin(2)
android·kotlin
watl04 小时前
【Android】unzip aar删除冲突classes再zip
android·linux·运维
键盘上的蚂蚁-4 小时前
PHP爬虫类的并发与多线程处理技巧
android
喜欢猪猪5 小时前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
JasonYin~6 小时前
HarmonyOS NEXT 实战之元服务:静态案例效果---手机查看电量
android·华为·harmonyos
zhangphil6 小时前
Android adb查看某个进程的总线程数
android·adb
抛空7 小时前
Android14 - SystemServer进程的启动与工作流程分析
android
Gerry_Liang9 小时前
记一次 Android 高内存排查
android·性能优化·内存泄露·mat
天天打码10 小时前
ThinkPHP项目如何关闭runtime下Log日志文件记录
android·java·javascript
爱数学的程序猿13 小时前
Python入门:6.深入解析Python中的序列
android·服务器·python