
Monkey
天地会珠海分舵
做个有耐心的全栈程序员。当前在做的产品-好学街: http://coursebao.com。自主博客: http://techgogogo.com
-
转载 Android 之 ServiceManager与服务管理
转载处:http://blog.csdn.net/xieqibao/article/details/6585143ServiceMananger是android中比较重要的一个进程,它是在init进程启动之后启动,从名字上就可以看出来它是用来管理系统中的service。比如:InputMethodService、ActivityManagerService等。在ServiceManager中有2014-10-24 12:25:091180
0
-
原创 第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本(原创)
本节我们先看下Monkey是怎么启动起来的。在今后分析到MonkeyRunner的原理的时候我们会看到客户端是通过ADB往Android目标测试机器发送一个”monkey -port 12345”的命令来启动Monkey服务的。那么这个命令做了什么事情呢?它其实就是通过调用monkey这个shell脚本来把Monkey服务给启动起来然后监听目标设备上的端口12345,最后MonkeyRunner等其他主机端的应用就能2015-03-07 21:56:351571
0
-
原创 第5章7节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles(原创)
Monkey启动之后需要在整个MonkeyRunner的测试生命周期中提供服务,也就是说,一旦我们调用monkeyrunner命令来执行指定的测试脚本的时候,只要monkeyrunner还没有退出,那么Monkey就会一直提供服务,一直监听获取并处理从MonkeyRunner测试脚本发送过来的相应的命令。那么要实现这种一直监听的处理我们很自然就想到需要用一个循环来处理了。其实Monkey也不例外,我们往下会分析它是怎2015-03-07 22:30:401987
0
-
原创 第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览(原创)
每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就是在Monkey.java这个类里面的,也就是说Monkey.java就是整个Monkey应用的入口类。2015-03-07 21:51:101606
0
-
原创 第5章6节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 初始化事件源(原创)
事件源代表要注入系统的命令事件数据是从哪里过来的。这一小节我们不会对事件源的实现进行深入的分析,因为下一章会做这个事情。这里大家对事件源有个基本概念就足够了。2015-03-07 22:26:111563
0
-
原创 第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)
设置好Monkey的CLASSPATH环境变量以指定”/system/framework /framework/monkey.jar“后,/system/bin/monkey这个shell脚本就会通过app_process命令指定monkey的入口类” “com.android.commands.monkey.Monkey”找到main函数开始运行。在运行之前会有一些初始化的工作需要做,其中很重要的一项就是去把用户提2015-03-07 22:13:591618
1
-
原创 《MonkeyRunner源码剖析》书籍手稿章节大纲
因为整个手稿内容比较多,有十多万字,需要从iBooks Author上面一个个整理出来分享,所以需要点时间才能全部完成。下面先给出整本书的大纲2015-03-08 10:57:002498
1
-
原创 第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)
在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自MonkeyRunner客户端发送过来的命令,然后针对每条命令请求进行相应的处理,所以它并不是作为一个随机压力测试的工具来运作2015-03-07 21:42:341989
0
-
翻译 Monkey源码分析番外篇之Android注入事件的三种方法比较
原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV往下分析monkey事件注入源码之前先了解下在android系统下事件注入的方式,翻译一篇国外文章如下。Method 1: Using internal APIs方法1:使用内部AP2014-10-24 16:54:527572
1
-
原创 Monkey源码分析之事件注入
本系列的上一篇文章《Monkey源码分析之事件源》中我们描述了monkey是怎么从事件源取得命令,然后将命令转换成事件放到事件队列里面的,但是到现在位置我们还没有了解monkey里面的事件是怎么一回事,本篇文章就以这个问题作为切入点,尝试去搞清楚monkey的event架构是怎么样的,然后为什么是这样架构的,以及它又是怎么注入事件来触发点击等动作的。在看这篇文章之前,希望大家最好先去看下另外几2014-10-25 09:24:164450
2
-
原创 MonkeyRunner源码分析之工作原理图
花了点事件整理了下MonkeyRunner的工作原理图:2014-11-29 14:25:112994
1
-
原创 Monkey源码分析之运行流程
在《MonkeyRunner源码分析之与Android设备通讯方式》中,我们谈及到MonkeyRunner控制目标android设备有多种方法,其中之一就是在目标机器启动一个monkey服务来监听指定的一个端口,然后monkeyrunner再连接上这个端口来发送命令,驱动monkey去完成相应的工作。当时我们只分析了monkeyrunner这个客户端的代码是怎么实现这一点的,但没有谈monke2014-10-23 13:06:114610
2
-
原创 monkey源码分析之事件注入方法变化
在上一篇文章《Monkey源码分析之事件注入》中,我们看到了monkey在注入事件的时候用到了《Monkey源码分析番外篇之Android注入事件的三种方法比较》中的第一种方法,通过Internal API的WindowManager的injectKeyEvent之类的方法注入事件。这种方法在android api level 16也就是android4.1.2之后已经发生了变化:2014-10-26 09:40:123116
0
-
翻译 Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制
在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用中注入事件吗?Google了下发现了国外一个大牛有留下蛛丝马迹描述这个问题,特意摘录下来并做相应部分的翻译,其他部分大家喜欢就看下,我就不翻译了。How it worksBehin2014-10-24 15:23:483625
3
-
原创 Monkey源码分析之事件源
上一篇文章《Monkey源码分析之运行流程》给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点。这里先把整个monkey类的结构图给出来供大家参考,该图源自网上(我自己的backbook pro上没有安装OmniGraffle工具,55美金,不舍得,所以直接贴网上的)图中有几点需要注意下的:MonkeyEve2014-10-24 08:56:143787
0
-
原创 寻求合作伙伴编写《深入理解 MonkeyRunner》书籍
背景:之前花了一个多月的时间尝试编写一本的书籍,详情看我个人空间公开的第7章内容。我现在编写的已经有大概12万字左右,跟出版商商讨后觉得应该增加一些实战方面的其他内容,这里寻求跟靠谱的人进行合作将其完成。本书的内容大纲如下: 第一部分:MonkeyRunner基础应用 主要讲解它如何使用,让读者能快速上手。 第二部分:MonkeyRunner原理解析 我来负责,主要是2015-02-06 11:17:533998
4
-
原创 第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用(原创)
上一节我们描述了monkey的命令处理入口函数run是如何调用optionProcess方法来解析命令行参数的。启动参数主要时去指导Monkey时怎么运行起来的,但Monkey作为MonkeyRunner框架的一部分,更重要的是如何将从MonkeyRunner测试脚本出发的命令转化成事件来注入到系统中以进行测试自动化。如前面所说,run方法除了对启动参数进行解析之外还做了很多其他的事情,比如这一小节需要分析的去建立对2015-03-07 22:21:191655
0