老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化
老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化
首先大家应该清楚的一点是,MonkeyRunner的运行是牵涉到主机端和目标设备端的,流程控制逻辑代码是在PC端运行的,但很多命令请求的执行是在目标机器端执行的。这不像其他框架如UiAutomator是所有东西都完全在目标设备端运行的。
这里我们首先应该去看的不是MonkeyRunnerStarter这个类里面的main这个入口函数,因为monkeyrunner其实是个shell脚本,它就在你的sdk/tools下面,这个shell脚本会先初始化一些变量,然后调用最后面也是最关键的一个命令:
...
exec java -Xmx128M $os_opts $java_debug -Djava.ext.dirs="$frameworkdir:$swtpath" -Djava.library.path="$libdir" -Dcom.android.monkeyrunner.bindir="$progdir" -jar "$jarpath" "$@"
代码8-1-1 MonkeyRunner 启动shell脚本
- -Xmx128M: 设置JVM最大分配内存为128M
- -Djava_ext_dirs: 设置JVM的java_ext_dirs属性,该属性指定的目录下的jar类包会由JVM的扩展类加载器在启动时加载。如将其设置成你安装的sdk目录下的/tools/lib就会在运行monkeyrunner时将需要用到的jar包monkeyrunner.jar等加载进来
- -Djava_library.path:设置java_library_path属性以指定monkeyrunner需要用到的库的位置,注意-D选项设置的属性是保存在JVM里面的,所以在monkeyrunner运行的过程中随时可以将该属性拿出来使用
- -Dcom.android.monkeyrunner.bindir:设置com.android.monkeyrunner.bindir属性,这个属性比较重要,在这里会设置成sdk安装目录下的/tools目录,也就是monkeyrunner这个shell脚本所在的目录
- $jarpath:通过-jar参数指定main方法的入口类所在的jar包,这里就是sdk目录下的/tools/lib/monkeyrunner.jar。 jar包里面的main入口函数坐在类是MonkeyRunnerStart.java这个类,往下我们会分析到
- $@:用户输入的参数,比如你这样运行monkeyrunner “monkeyrunner -s 192.168.1.1 -p 5532 -v ALL”,那么$@就是“-s 192.168.1.1 -p 5532 -v ALL”。至于各个参数的含义,请查看help
图8-1-1 MonkeyRunner - help
所以这个monkeyrunner启动shell脚本的作用就是将monkeyrunner需要的运行环境如库所在位置等初始化,然后调用exec命令打开一个JAVA进程来运行sdk目录下的/tools/lib/monkeyrunner.jar这个jar包。
下一小节我们就去看下monkeyrunner.jar包的入口函数MonkeyRunnerStart.java是怎么解析处理命令行参数的。
老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化的更多相关文章
- 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件
老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...
- 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态
老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 poptest是国内唯一 ...
- 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer
老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer poptest是国内唯一一家培养 ...
- 老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
老李推荐:第14章3节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培 ...
- 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述
老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述 HierarchyViewer库的引入让M ...
- 老李推荐:第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程
老李推荐:第14章1节<MonkeyRunner源码剖析> HierarchyViewer实现原理-面向控件编程VS面向坐标编程 poptest是国内唯一一家培养测试开发工程师的培训机 ...
- 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...
- 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本
老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...
- 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结 本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...
随机推荐
- groovy学习(四)io
package ch5 numbers = [11, 12, 13, 14]def staffTel = ['Ken' : 2745, 'John' : 2746, 'Jessie' : 2772]p ...
- UWP: 体验应用内购新接口——StoreContext类
Windows 1607 版本(内部版本 14393)之后,微软在 SDK 添加了一些与应用商店相关的新接口,像应用试用与购买.应用内购等.这些接口相对于原来的接口要方便很多.就拿应用内购来说,以前的 ...
- Linux学习之Linux目录及文件系统
以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘...)及分区来实现文件管理,然后之下才是目录,目录就显得不是那么重要,除系统文件之外的用户文件放在任何地方任何目录也是没有多 ...
- 第十六篇 基于Bootstarp 仿京东多条件筛选插件的开发(展示上)
这几天学习Bootstrap,本来是两年前的用的东西,现在又重新拾起来,又有很多重新的认识,看了Bootstrap的样式偏多,插件现在还没有学习到几个,也有写几个插件自己用的想法.正好工作上也会用到, ...
- 新浪微博iOS SDK UIImage+WBSDKResize.o
Undefined symbols for architecture armv7: "_kCGImageSourceThumbnailMaxPixelSize", referenc ...
- html、css、js实现手风琴图片滑动
手风琴图片滑动是我最近学的一个图片的效果,感觉不错,分享给大家. 最终效果见 :http://gjhnstxu.me/squeezebox/demo.html 详细代码如下: html代码: < ...
- 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝
1664: [Usaco2006 Open]County Fair Events 参加节日庆祝 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 255 S ...
- SDWebImage下载图片的使用
第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...
- Rabbitmq 性能测试
背景: 线上环境,出了一起事故,初步定位是rabbitmq server. 通过抓包发现,是有多个应用使用同一台rabbitmq server.并且多个应用使用rabbitmq的方式也不一样.发现有以 ...
- lnmp pathinfo问题
location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 ...