Android Monkey源码分析
文章平均质量分 84
分析Monkey源码,学习Google开发
西二旗王员外
我的个人笔记,如果有幸对您有帮助,欢迎点赞…………
展开
-
Android之Monkey源码分析(第十三篇:触摸事件流程分析)
前面讲了一些monkey作者的设计思想(有的我没写完,还没发布,惨),这篇来点实际的,monkey程序是如何发起一个触摸事件的呢?本例子中假设使用的命令是:表示向相机app发出1000个事件,所有事件都是随机的,其中会包括touch事件,那么这些touch事件是怎么构造的呢?1、monkey作者熟悉Android框架,它巧妙的使用了系统预留的系统服务,InputMangerService发出了touch事件。原创 2023-10-23 11:23:35 · 374 阅读 · 2 评论 -
Android之Monkey源码分析(第X篇:工具类MonkeyUtils的设计思想)
前言 Monkey程序中,作者设计了两个工具类,分别是MonkeyUtils、MoneyPermissionUtil,今天这篇文章介绍作者如何设计工具类MonkeyUtilsMonkeyUtils类设计分析 由于该类定位是工具类,作者做了几件很酷的事情1、将该类设计为Abstract,使其不能创建对象public abstract class MonkeyUtils {}2、构造方法设为私有 private MonkeyUtils() { }...原创 2021-12-03 22:36:41 · 2506 阅读 · 0 评论 -
Android之Monkey源码分析(第七篇:Monkey程序如何获知App崩溃,然后自己停止运行的逻辑分析)
前言 Monkey程序是用来执行稳定性测试的,被测App如果出现崩溃,Monkey程序会第一时间收集日志,App出现ANR,Monkey程序也会第一时间收集日志,这些都究竟是怎么做到的呢?这就依靠的是ActivityController...原创 2022-01-12 22:20:20 · 4570 阅读 · 0 评论 -
Android之Monkey源码分析(第六篇:系统服务初始化过程分析)
前言 自从Monkey对象创建之后,主流程的run()方法被调用,在run()方法执行过程中,对Monkey对象持有的几个系统服务进行了初始化,没有系统服务的支持,Monkey程序将举步维艰,一起分析一下吧run()方法回顾 run()方法是Monkey类中的一个实例方法,在它的内部执行了Monkey程序的主要流程,在其中一个步骤中,调用了一个getSystemInterfaces()方法,在此方法中,获取到远程系统服务的引用,从而畅快的使用系统服务完成工作private ...原创 2021-09-14 23:07:12 · 393 阅读 · 0 评论 -
Android之Monkey源码分析(第五篇:解析包名文件过程分析)
前言 Monkey对象的run()方法中包括的Monkey程序执行流程,其中有一个loadPackageLists()方法用于加载包名,我们一起分析一下吧 private int run(String[] args) { …………省略很多源码………… if (!loadPackageLists()) { return -1; } …………省略很多源码…………}loadPackageLists..原创 2021-09-14 22:43:39 · 584 阅读 · 0 评论 -
设计与开发monkey自动化测试方案需要多少技术栈?
0、根本思想:将人所有的手工动作全部转换自动化动作(每一个动作绝对不允许人的参与)自动化测试最难做的就是把所有动作都变成自动化动作0-1、自动化四元素:自动化环境、自动化过程、自动化结果、自动化回归0-2、分析Monkey测试要进行的所有动作(这个分析自动化的动作环节很重要,不能错过任何一个手工动作,任何一个人的动作,这样去做自动化,才靠谱,自动化方案,最重要的就是动作采集,然后一个一个的...原创 2020-08-27 00:51:00 · 379 阅读 · 1 评论 -
Android之Monkey源码分析(第四篇:命令行参数解析过程分析与参数作用阐述)
前言 在第三篇文章中,我分析Monkey程序的主线程执行过程,其中Monkey的run()方法包含了大部分执行流程,今天这篇文章主要分析命令行参数是如何解析到内存中,在monkey程序中使用的!run()方法分析 private int run(String[] args) { ………………省略代码………… mArgs = args; ………………省略代码………… mNextArg..原创 2021-09-14 22:09:13 · 1250 阅读 · 1 评论 -
Android之Monkey源码分析(第三篇:Monkey主线程执行过程分析)
前言 由第一篇文章可知,monkey程序先由shell脚本执行,shell脚本程序接着使用exec命令替换成一个新的c++程序app_process,再接着由app_process程序创建ART虚拟机实例,然后app_process会根据命令行参数中传递的参数,去加载Java程序,位于/system/framework/monkey.jar这个jar文件中的Monkey类(字节码dex格式)会加载到ART虚拟机内存中,Monkey类是Java程序的入口类,它的静态方法main()会被调用,今天一起..原创 2021-07-05 22:06:31 · 2035 阅读 · 10 评论 -
Android之Monkey源码分析(第二篇:Monkey的事件来源与事件的总体设计思想)
前言 认真阅读了monkey程序的源码,没想到monkey程序除了支持从命令行直接执行外,还支持从脚本文件中读取命令执行,还可以从Socket中读取命令执行,这真是太牛逼了……这可是2009年左右的代码……程序太稳了,几乎没有再有代码更新,如果你写过Android App,你会发现monkey程序与Android App截然不同,monkey程序是脱离App框架执行流的程序,并且没有图形界面,它是命令行程序,每个Android App的主线程,也称作Ui线程,主线程涉及大量的GUI界面相关的工作。..原创 2021-06-09 23:17:57 · 1814 阅读 · 4 评论 -
Android之Monkey源码分析(第一篇:环境与命令)
Monkey源码获取:https://android.googlesource.com/platform/development.git/前言 monkey,一个Android平台的命令行工具,既熟悉又陌生,很多同学一定熟悉monkey的使用,而陌生的是对它的原理完全不懂,所以才有今天学习Monkey的源码设计,monkey程序是如何实现的呢?monkey源码下载地址:https://github.com/aosp-mirror/platform_development/tree/mas...原创 2021-05-19 22:43:38 · 2170 阅读 · 0 评论