编译 android monkey,Android稳定性测试-- Monkey二次开发

本文介绍了如何通过Monkey源码改造以解决其在稳定性测试中的局限性,包括添加截图功能和Wi-Fi自动重连优化。首先,详细讲解了如何在Linux和Windows环境下编译Monkey,并提供了详细的编译步骤。接着,展示了如何通过源码改造实现截图功能,以及在Monkey中添加Wi-Fi监控事件,确保在执行过程中Wi-Fi断开时能够自动重连。最后,鼓励读者探索更多Monkey的二次开发可能性。
摘要由CSDN通过智能技术生成

引子

前面一遍blog Monkey源码分析讲到Monkey的代码结构和代码执行流程,相信通过介绍大家应该对monkey的运行原理和核心逻辑有了很深刻的了解。我们做的这一切都是为了更好的了解monkey的内部逻辑进行二次开发。

为什么要二次开发前面的文章也大概说了,它毕竟是一款为稳定性测试而准备的小工具,所以存在很多局限性:

Monkey不提供截屏功能,因此测试很难找到问题复现的场景;

Monkey无法进行控件识别,对事件流控制能力很微弱;

执行过程中容易误点工具栏导致Wi-Fi关闭,影响测试效果;等等。

本节重点介绍的就是如何通过Monkey源码改造的方法来解决上述问题,以更好地提升Monkey的使用效果。

1.保持随机

2.尽可能让其他控件有相同机会

3.尽可能操作有意义的控件

4.尽可能覆盖到每个Activity

Monkey代码重编译

monkey.jar的源码位于Android源码的

\development\cmds\monkey\src\com\android\commands\monkey 目录下,如图所示

767f0bac07a06e22c9aa0f0d8e7f2d6b.png

Monkey重编译的方法有两种:

一种是在Linux环境下编译

另一种是在Windows环境下编译

因为在Windows环境下编译更为常见,所以这里会重点介绍第二种方法。

Linux环境下编译

在Linux环境下,下载要测试Android系统版本对应的全部源代码,进入源码目录。

执行.build/envsetup.sh,设置Android的编译环境

执行make monkey开始编译Monkey

编译成功后,可在/out/target/product/generic/system/framework/中获取Monkey.jar包。

Windows环境下编译

Windows环境下的编译要稍微复杂一点。

创建Monkey项目。同样也是需要下载要测试Android系统版本对应的全部源代码,在/development/cmds/monkey目录下找到Monkey的工程源码。在Eclipse中新建一个Java工程,把Monkey源码导入进去

设置Java Build Path。选中对应项目,在顶部菜单栏依次选题Project→Properties→Jave Build Path→Libraries,添加两个jar文件:android.jar和framework.jar。

其中android.jar可以从Android Sdk中platforms\android-X\目录下获取;framework.jar可以通过以下两种方式获取。

(1)(推荐)从在Linux环境下Android源码根目录执行make update-api编译生成,如截图中的classes_dex2jar.jar文件就是通过Android源码编译生成的。

(2)直接从Android手机上/system/framework目录下获取已经编译好的framework.jar文件,把这个framework.jar解压,取出其dex,然后把它的dex通过dex2jar工具转换为jar包,导入工程。添加android和framework的jar包后,还需要将framework的jar包顺序调整到顶部,如图所示:

1d601358c8f6f03bf3d43503dbb5c56d.png

编译生成jar包。选择Monkey项目,单击右键→单击Export→选择输出的Jar包类型为“JAR file”类,单击“Next”按钮;选择对应的构建工程,填写jar包输出路径,单击“Next”按钮;进入打包选项页面,这里用默认选项即可,直接单击“Next”按钮;

选择工程中main函数所在的类,单击“Finish”按钮;编译完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值