当前位置: 首页 > news >正文

Android monkey命令和monkey脚本详解

Monkey命令

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

基本语法

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 毫秒,你可以使用以下命令:

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

#!/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. 给脚本执行权限:

    chmod +x run_monkey.sh
    
  2. 运行脚本:

    ./run_monkey.sh
    

注意事项

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vim gcc
  • 【MQTT协议与IoT通信】MQTT协议的使用和管理
  • 追问试面试系列:开篇
  • HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(九)
  • 【React】useState:状态管理的基石
  • 【BUG】已解决:ERROR: No matching distribution found for PIL
  • 《GPT-4o mini:开启开发与创新的新纪元》
  • Python酷库之旅-第三方库Pandas(050)
  • 数据传输安全--SSL VPN
  • 音视频入门基础:PCM专题(3)——使用Audacity工具分析PCM音频文件
  • 微信小程序 async-validator 表单验证 第三方包
  • MySQL第一阶段:多表查询、事务
  • 系留无人机在技术上有哪些优势或创新点
  • 华为高教校园网络解决方案 方案规划
  • Elasticsearch 基础
  • 【译】JS基础算法脚本:字符串结尾
  • .pyc 想到的一些问题
  • 《剑指offer》分解让复杂问题更简单
  • Angular Elements 及其运作原理
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • E-HPC支持多队列管理和自动伸缩
  • gulp 教程
  • Hexo+码云+git快速搭建免费的静态Blog
  • iOS小技巧之UIImagePickerController实现头像选择
  • Material Design
  • mysql innodb 索引使用指南
  • springMvc学习笔记(2)
  • Terraform入门 - 3. 变更基础设施
  • 从输入URL到页面加载发生了什么
  • 服务器从安装到部署全过程(二)
  • 关于for循环的简单归纳
  • 讲清楚之javascript作用域
  • 类orAPI - 收藏集 - 掘金
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 算法-图和图算法
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 《码出高效》学习笔记与书中错误记录
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # 职场生活之道:善于团结
  • #传输# #传输数据判断#
  • (06)Hive——正则表达式
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Git) gitignore基础使用
  • (安卓)跳转应用市场APP详情页的方式
  • (第一天)包装对象、作用域、创建对象
  • (二)springcloud实战之config配置中心
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (汇总)os模块以及shutil模块对文件的操作
  • (面试必看!)锁策略
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Android学习笔记 --- android任务栈和启动模式