多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > 第1章3節(jié)《MonkeyRunner源碼剖析》概述:架構(gòu)(原創(chuàng))

第1章3節(jié)《MonkeyRunner源碼剖析》概述:架構(gòu)(原創(chuàng))

來源:程序員人生   發(fā)布時(shí)間:2015-04-08 08:59:21 閱讀次數(shù):4304次

天地會(huì)珠海分舵注:本來這1系列是準(zhǔn)備出1本書的,詳情請(qǐng)見早前博文“尋求合作火伴編寫《深入理解 MonkeyRunner》書籍“。但由于諸多緣由,沒有如愿。所以這里把草稿分享出來,所以毛病在所難免。有需要的就參考下吧,轉(zhuǎn)發(fā)的話還請(qǐng)保存每篇文章結(jié)尾的出處等信息。

原理架構(gòu)


MonkeyRunner使用起來非常的簡單,只需要導(dǎo)入以下幾個(gè)類基本上就可以滿足測試腳本編寫的需求,比如:

  • monkeyrunner.jar庫的MonkeyRunner
  • monkeyrunner.jar庫的MonkeyDevice
  • monkeyrunner.jar庫的MonkeyImage

如果你想使用MonkeyRunner的控件相干的功能來讓自己的代碼可擴(kuò)大性和可移植性更好,那末你也只需額外用上下面幾個(gè)類就基本上能滿足你的要求了:

  • chimpchat.jar庫的:HierarchyViewer
  • hierarchyviewerlib.jar庫的:ViewNode

如果你還想更簡單的使用控件相干的功能,MonkeyRunner一樣也能夠滿足你,只要你導(dǎo)入以下的類就能夠使用EasyMonkeyDevice來調(diào)用其封裝好的易用的API:

  • monkeyrunner.jar庫的easy模塊: EasyMonkeyDevice
  • monkeyrunner.jar庫的easy模塊: By

所以從腳本的角度來看,使用MonkeyRunner可以簡單的理解成把需要的類給整合起來,然后通過代碼把相應(yīng)的業(yè)務(wù)邏輯通過各個(gè)類提供的方法給實(shí)現(xiàn)出來。?
這里寫圖片描述

但從MonkeyRunner實(shí)現(xiàn)的角度來看,事實(shí)并沒有這么簡單,為了滿足MonkeyRunner腳本需要的功能,全部框架里面會(huì)使用到不同的庫和不同的模塊,乃至?xí)?qū)動(dòng)Android機(jī)器真?zhèn)€不同模塊與服務(wù)來做事情。我們先看下MonkeyRunner的全部架構(gòu)圖:
這里寫圖片描述

MonkeyRunner是1個(gè)CS(客戶端-服務(wù)器)架構(gòu)的框架,主要的代碼控制邏輯是在PC端作為客戶端來運(yùn)行的;但客戶端需要驅(qū)動(dòng)運(yùn)行在目標(biāo)Android系統(tǒng)的服務(wù)器端來做事情,比如驅(qū)動(dòng)Monkey服務(wù)去調(diào)用對(duì)應(yīng)的Android服務(wù)去注入事件以實(shí)現(xiàn)點(diǎn)擊等操作功能。服務(wù)器端和客戶真?zhèn)€通訊是通過Socket來實(shí)現(xiàn)的,而Socket又分為基于USB通訊協(xié)議和TCP通訊協(xié)議的,也就是說用戶既可以通過 USB線直接連接主機(jī)和Android目標(biāo)機(jī)器;也能夠通過網(wǎng)絡(luò)使用TCP協(xié)議來連接主機(jī)和 Android目標(biāo)機(jī)器(使用命令:adb connect IP)。但注意客戶端其實(shí)不會(huì)直接連接Android目標(biāo)裝備端中各個(gè)服務(wù)正在監(jiān)聽的端口,而是連接主機(jī)端和該端口對(duì)應(yīng)的轉(zhuǎn)發(fā)端口,只要連接上轉(zhuǎn)發(fā)端口,所有發(fā)向該端口的數(shù)據(jù)都會(huì)直接轉(zhuǎn)發(fā)給Android目標(biāo)機(jī)器端對(duì)應(yīng)的服務(wù)監(jiān)聽的端口。

從上圖可以看到,MonkeyRunner腳本的實(shí)現(xiàn)需要多個(gè)庫的支持,經(jīng)常使用的有以下這幾個(gè):

  • monkeyrunner庫:MonkeyRunner最主要的庫,腳本可以直接使用里面的MonkeyRunner,MonkeyDevice,MonkeyImage類來控制Android目標(biāo)裝備和利用和截圖等功能
  • chimpchat庫:monkeyrunner庫的很多功能都是通過調(diào)用chimpchat庫相應(yīng)的類來實(shí)現(xiàn)的,比如調(diào)用MonkeyDevice類的安裝利用包installPackage方法會(huì)直接調(diào)用到到chimpchat庫的對(duì)應(yīng)類AdbChimpDevice的installPackage方法,然后該方法再會(huì)調(diào)用ddmlib的對(duì)應(yīng)方法來通過Socket往ADB服務(wù)器發(fā)送命令,然后ADB服務(wù)器會(huì)驅(qū)動(dòng)Android目標(biāo)機(jī)器真?zhèn)€adbd這個(gè)守護(hù)進(jìn)程來實(shí)現(xiàn)安裝利用包的要求。所以chimpchat對(duì)使用ADB進(jìn)行通訊的進(jìn)程來講,相當(dāng)于MonkeyRunner和ddmlib之間的代理中間層。但對(duì)使用Monkey進(jìn)行通訊的時(shí)候,chimpchat其實(shí)不需要通過ddmlib來驅(qū)動(dòng)Android目標(biāo)機(jī)器的monkey服務(wù),而是chimpchat自己來完成socket建立和命令發(fā)送的功能
  • ddmlib庫:在MonkeyRunner框架中,ddmlib主要是幫忙處理跟ADB服務(wù)器通訊的事宜
  • hierarchyviewerlib庫:當(dāng)MonkeyRunner腳本需要用到控件相干的功能的時(shí)候就會(huì)使用到這個(gè)庫來建立控件樹和獲得指定控件的相干屬性

往下1層我們可以看到,MonkeyRunner跟Android目標(biāo)機(jī)器進(jìn)行通訊根據(jù)需要做的事情不同而會(huì)驅(qū)動(dòng)3種不同的服務(wù)去處理要求:

  • ADB服務(wù):主要是處理非界面操作的相干要求,比如安裝利用包等
  • monkey服務(wù):主要是處理界面操作相干的要求,比如點(diǎn)擊指定坐標(biāo)等
  • ViewServer服務(wù):主要是處理控件相干的要求,比如獲得當(dāng)前界面所有控件信息等

這里要注意的是MonkeyRunner框架其實(shí)不會(huì)直接連接adbd這個(gè)Android目標(biāo)機(jī)器的守護(hù)進(jìn)程來驅(qū)動(dòng)其做事情,而是先和ADB服務(wù)器這個(gè)PC真?zhèn)€守護(hù)進(jìn)程進(jìn)行通訊,然后再由ADB服務(wù)器來驅(qū)動(dòng)adbd來完成要求的。至于ADB服務(wù)器,ADB守護(hù)進(jìn)程,ADB協(xié)議和ADB命令行客戶端等概念,第4章”ADB協(xié)議及服務(wù)“會(huì)詳述。

最下面1層就是Android系統(tǒng)的核心服務(wù)了。MonkeyRunner的很多要求都是需要調(diào)用到Android的系統(tǒng)服務(wù)來完成的。比如點(diǎn)擊1個(gè)控件就需要通過monkey服務(wù)來調(diào)用Android系統(tǒng)的InputManagerService來注入按鍵事件來實(shí)現(xiàn)點(diǎn)擊要求。


作者:天地會(huì)珠海分舵
微信公眾號(hào):TechGoGoGo
微博:http://weibo.com/techgogogo
CSDN:http://blog.csdn.net/zhubaitian

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品国产亚洲精品看不卡 | 一本大道香蕉在线高清视频 | 欧美成人午夜精品一区二区 | 日韩一级在线观看 | 亚洲第一视频在线观看 | 亚欧成人在线 | 亚洲成a人片在线观看尤物 亚洲成a人片在线观看中文!!! | 第一国内永久免费福利视频 | 成人国产在线不卡视频 | 豆国产97在线 | 欧洲 | 日韩一区二区不卡中文字幕 | 男人边吃奶边做好爽的视频 | 一区一区三区产品乱码 | 国产丰满眼镜女在线观看 | 日本中文字幕在线视频 | 欧美大片天天免费看视频 | 久久精品国产线看观看亚洲 | 中文字幕天天躁夜夜狠狠综合 | 国产一区二区自拍视频 | 黄色中文字幕在线观看 | 久久精品观看影院2828 | 欧美人成人亚洲专区中文字幕 | 国产不卡的一区二区三区四区 | 亚洲 欧美 日韩 另类 | 亚洲 欧美 校园 | 亚洲综合欧美日韩 | 久久国产精品免费一区二区三区 | 亚洲午夜在线观看 | 欧美特级黄色 | 最近免费中文字幕视频高清在线看 | 欧美色伊人| 欧美最猛性xxxx | 亚洲欧美经典 | 亚洲一区日韩一区欧美一区a | 性欧美大战久久久久久久久 | 五月网站 | 我爱52av好色 | 国产精品亚欧美一区二区三区 | 2022国产成人精品福利网站 | 国产区精品视频 | 福利国产|