zoukankan      html  css  js  c++  java
  • 老李推荐:第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是怎么解析处理命令行参数的。

  • 相关阅读:
    android自定义Activity窗体大小
    Android UI设计--半透明效果对话框及activity(可做遮罩层)
    Android借助Handler,实现ViewPager中页面的自动切换(转)
    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
    阅读(1)
    Android 之 下拉框(Spinner)的使用-转
    android中自定义下拉框(转)
    androidwebview网页显示事件
    androidwebview timeout
    android开源框架
  • 原文地址:https://www.cnblogs.com/poptest/p/5086369.html
Copyright © 2011-2022 走看看