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 测试脚本。你可以根据自己的需要对其进行扩展和修改。

相关推荐
__water6 分钟前
RHA《Unity兼容AndroidStudio打Apk包》
android·unity·jdk·游戏引擎·sdk·打包·androidstudio
一起搞IT吧2 小时前
相机Camera日志实例分析之五:相机Camx【萌拍闪光灯后置拍照】单帧流程日志详解
android·图像处理·数码相机
浩浩乎@3 小时前
【openGLES】安卓端EGL的使用
android
Kotlin上海用户组4 小时前
Koin vs. Hilt——最流行的 Android DI 框架全方位对比
android·架构·kotlin
zzq19965 小时前
Android framework 开发者模式下,如何修改动画过度模式
android
木叶丸5 小时前
Flutter 生命周期完全指南
android·flutter·ios
阿幸软件杂货间5 小时前
阿幸课堂随机点名
android·开发语言·javascript
没有了遇见5 小时前
Android 渐变色整理之功能实现<二>文字,背景,边框,进度条等
android
没有了遇见6 小时前
Android RecycleView 条目进入和滑出屏幕的渐变阴影效果
android
站在巨人肩膀上的码农7 小时前
去掉长按遥控器power键后提示关机、飞行模式的弹窗
android·安卓·rk·关机弹窗·power键·长按·飞行模式弹窗