取之于网,用之于网。本为过路人,姑且搬运中
-
一、PC端 环境搭建(基于win10专业版)
安装JDK(非必须)
安装好后在电脑的环境变量中进行配置(控制面板\系统和安全\系统\高级系统设置\高级\环境变量\\编辑Path变量\新建\输入jdk路径)
安装SDK
安置好后在电脑的环境变量中进行配置(控制面板\系统和安全\系统\高级系统设置\高级\环境变量\\系统变量\新建\输入sdk相关信息\确定)
参照上面JDK的步骤在path变量中添加sdk的相关路径 (%ANDROID_SDK%\platform-tools;%ANDROID_SDK%\tools)
验证
在cmd中输入java -version,如果有显示java version 信息则验证jdk成功,如果提示没有java命令则失败,需要检查是否配置路径正确。
在cmd中输入adb devices,如果提示没有adb命令则失败,其余提示则成功。
二、Device端 (Android手机)
获取Monkey对象
通过adb shell pm -l(也可以通过adb shell + pm list package)获取设备中所有的package包名
简易开始
从上面的包名中选出你想要的对象,将其放入txt文件中,每个包名以行隔开
将此txt文件push到data/下(push目录可自定义)
执行adb shell monkey --pkg-blacklist-file /data/xxx.txt --throttle 1000 3600 > log.txt
#--pkg-blacklist-file 参数后面的文件为白名单文件,也就是系统中除开这个文件里列出的包名以外均为要跑monkey的包。
#--pkg-blacklist-file 参数后面的文件为黑名单文件,也就是系统中只有这个文件里列出的包要跑monkey。两者不能同时出现。
#--throttle 参数后面为事件频率,单位ms,即每次事件的间隔。
#3600 表示多少次事件,此值随意。此值X上面的频率,即可得出monkey要跑多久,按上例monkey要跑1000MS X 3600为1小时
#> 为定向,上例是定向到PC上当前目录的log.txt文件中。即可心> c:\log.txt到PC上,也可以> /data/log/tt.txt到设备中。
#1> 2> 分流定向,1> log.txt表示标准流输出到PC的log.txt, 2 > /data/log/log.txt 表示异常流输出到设备的/data/log/log.txt文件中。
参数大全
调试类
--dbg-no-events:初始化启动的activity,但是不产生任何事件。
--hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
--kill-process-after-error:发生错误后直接杀掉进程
--monitor-native-crashes:跟踪本地方法的崩溃问题
--wait-dbg:知道连接了调试器才执行monkey测试。
约束类
-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p 对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
-c:activity必须至少包含一个指定的category,才能被启动,否则启动不了;
一般类
-s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。如: -s200
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle100
--pct-touch:指定触摸事件的百分比,如:--pct-touch5%
--pct-motion (滑动事件)
--pct-trackball (轨迹球事件)
--pct-nav (导航事件 up/down/left/right)
--pct-majornav (主要导航事件 back key 、 menu key)
--pct-syskeys (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)
--pct-appswitch (activity之间的切换)
--pct-anyevent(任意事件)
打印类
--help:打印帮助信息
-v:指定打印信息的详细级别,一个-v增加一个级别, 默认级别为0。最高为2,即-v -v -v
三、 便利化
使用bat脚本
#verson@auto
#20200630
echo off
rem set utf-8 page
chcp 65001
rem get time
set cur_month=%date:~8,2%
set cur_day=%date:~5,2%
set cur_date=%cur_month%-%cur_day%
set cur_time=%time:~0,8%
set monkey_dir=mk%cur_date%
set monkey_pm_file=pmlist.txt
set whitelist_file=whitelist.txt
set whitelist_bk_file=whitelist_backup.txt
set log_file=log.txt
echo monkey_dir is %monkey_dir%
echo monkey_pm_file is %monkey_pm_file%
rem entry workspace /Desktop/monkey
cd Desktop
mkdir monkey
cd monkey
rmdir %monkey_dir%
mkdir %monkey_dir%
cd %monkey_dir%
rem get all package
del /f %monkey_pm_file%
adb shell pm -l > %monkey_pm_file%
rem interaction
if not exist %whitelist_file% (
echo #verson@auto tips > %whitelist_file%
)
echo If u need hide some app, please take them into whitelist.txt!
echo If u Done, Please click any key to continue!
pause
echo all package in!
adb push %whitelist_file% /data/
cp %whitelist_file% %whitelist_bk_file%
echo lets go!
adb shell monkey --pkg-blacklist-file /data/%whitelist_file% --throttle 700 -v -v -v 9999999 > %log_file%
使用python脚本
待续
使用shell脚本
同上