最后我们对MonkeyRunner启动的过程做一个总结,当然,当中也包括启动Monkey,尽管它不属于启动过程的一部分:

  • monkeyrunner这个shell脚本会先设置一些执行环境的系统属性保存到JVM的System.Propery里面
  • 然后该脚本会通过java -jar直接执行sdk以下的monkeyruner.jar
  • 然后操作系统直接回调到monkeyrunner在MonkeyRunnerStarter里面的入口函数main
  • 入口函数会先尝试实例化MonkeyRunnerStarter的实例
  • 实例化MonkeyRunnerStarter时会去实例化ChimpChat这个类
  • 实例化ChimpChat这个类的时候会去创建AndroidDebugBridge对象启动一个ADBserver进程来进行与adbserver以及目标设备的adb守护进程通讯
  • 实例化ChimpChat时还会在上面创建的AndroidDebugBridge对象的基础上创建DeviceMonitor对象并启动一个线程来监控和维护连接到主机PC的代表Android设备的Device列表,由于监控设备时须要通过往ADBserver发送不同的监控命令来实现的。比方监控设备的时候须要往ADBserver发送”host: track-devices”主机服务请求来周期性获取ADBserver发送过来的最新设备列表;监控每一个可调试进程须要发送”track-jdwp”来周期性获取进程PID信息。
  • 在以上都准备好后就会尝试启动jython编译器的console或者直接调用jython编译器去解析执行脚本
  • 在上面的整个MonkeyRunner的启动过程中并没有包括monkey的启动。monkey的启动是在用户编写脚本时候调用MonkeyRunner类的waitForConnection所牵涉的一系列调用过程中启动的。同一时候waitForConnection还会创建两个非常重要的设备对象,一个是专门接受处理monkey请求的ChimpManager对象。一个是囊括了往monkey发送请求和往ADBserverDevice发送请求的AdbChimpDevice类的实例对象

注:很多其它文章请关注公众号:techgogogo或个人博客http://techgogogo.com。当然,也非常欢迎您直接微信(zhubaitian1)勾搭。本文由天地会珠海分舵原创。转载请自觉,是否投诉维权看心情。

最新文章

  1. MMORPG大型游戏设计与开发(服务器 AI 控制器)
  2. 2016湖大校赛 L题 The Sequence likes Ladder
  3. AlwaysON同步的原理及可用模式
  4. 使用BeanNameAutoProxyCreator实现spring的自动代理
  5. 【转】linux 编译安装nginx,配置自启动脚本
  6. Prism&MEF构建开发框架
  7. mysql概要(二)类型
  8. 树莓派_Linux串口编程_实现自发自收
  9. cocos2dx中的精灵CCSprite
  10. HDU 4424 Conquer a New Region 最大生成树
  11. ACM心路
  12. 网络推广 免费推广产品网站 B2B网站如何推广
  13. 禁止Cnario Player启动后自动开始播放
  14. 相似度度量:欧氏距离与余弦相似度(Similarity Measurement Euclidean Distance Cosine Similarity)
  15. m文件转换c代码
  16. 试安装pyQt5+eric6+python安装
  17. MemoryFile偷取安卓内存
  18. Nordic SDK例程目录结构
  19. bzoj3675
  20. STL::array

热门文章

  1. POJ2299 树状数组求逆序对
  2. PostgreSQL创建只读用户
  3. Unity 调用 Android Native 方法(一) 获得Android系统音量
  4. 题解 BZOJ4919 【大根堆】
  5. mysql(for update)悲观锁总结与实践
  6. PatentTips - Supporting heterogeneous virtualization
  7. codevs——T2806 红与黑
  8. [Python] Plotting multiple stocks
  9. Mahout-HashMap的进化版FastByIdMap
  10. HotSpotVM的Java堆实现浅析#1:初始化