日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

公司主要業(yè)務(wù)包含游戲AI及自動(dòng)化測(cè)試,我們的AI團(tuán)隊(duì)需要利用移動(dòng)設(shè)備對(duì)游戲內(nèi)AI機(jī)器人的表現(xiàn)做一些持續(xù)性跟蹤優(yōu)化,自動(dòng)化測(cè)試團(tuán)隊(duì)這邊對(duì)于游戲的UI自動(dòng)化測(cè)試開(kāi)發(fā)工作也在不斷向前推進(jìn),兩者對(duì)于移動(dòng)設(shè)備的使用都是必要的。

由于移動(dòng)設(shè)備資源有限,存在頻繁互借,忘記歸還等情況。為了解決管理和調(diào)用問(wèn)題,我們做了一些深入調(diào)研,最后了解到,可以采用開(kāi)源框架STF或者是ATXServer2來(lái)解決,將有限的資源達(dá)到最大化的輸出。下面會(huì)對(duì)通過(guò)這兩種方式搭建移動(dòng)設(shè)備管理平臺(tái)做個(gè)簡(jiǎn)單的介紹,同時(shí),也做個(gè)簡(jiǎn)單的比較,大家可以根據(jù)公司業(yè)務(wù)情況對(duì)其進(jìn)行選擇。

1. 基于STF搭建移動(dòng)設(shè)備管理平臺(tái)

1.1 STF介紹及優(yōu)劣勢(shì)分析

  • STF是最早的遠(yuǎn)程真機(jī)調(diào)試平臺(tái),現(xiàn)在所有的遠(yuǎn)程真機(jī)調(diào)試其實(shí)都是借鑒了它的實(shí)現(xiàn)思想。
  • 優(yōu)勢(shì):支持Android/ target=_blank class=infotextkey>安卓2.3-10.0系統(tǒng)(10.0系統(tǒng)為目前最新)通過(guò)瀏覽器遠(yuǎn)程控制,支持遠(yuǎn)程鼠標(biāo)鍵盤(pán)對(duì)真機(jī)進(jìn)行操作遠(yuǎn)程復(fù)制粘貼功能快照截圖應(yīng)用包及文件的上傳/下載功能支持遠(yuǎn)程端瀏覽器進(jìn)行真機(jī)訪問(wèn)操作日志輸出及錯(cuò)誤日志輸出打印腳本運(yùn)行(可實(shí)現(xiàn)后續(xù)的自動(dòng)化測(cè)試)開(kāi)發(fā)人員進(jìn)行遠(yuǎn)程debug功能提供設(shè)備機(jī)的CPU,內(nèi)存,電量等性能的監(jiān)測(cè)固化測(cè)試機(jī)器的系統(tǒng)版本,系統(tǒng)設(shè)置,不被篡改
  • 劣勢(shì):僅支持安卓手機(jī)遠(yuǎn)程控制,IOS不支持(需要二次開(kāi)發(fā))并不能很好兼容國(guó)內(nèi)各種各樣的安卓定制化手機(jī),可能會(huì)遇到STF.APK無(wú)法正常安裝到手機(jī)或者無(wú)法正常自動(dòng)啟動(dòng)服務(wù)的情況。

1.2 架構(gòu)介紹(Nodejs+Angularjs+Rethinkdb)

STF的核心功能可以理解為:“同步圖像” + “點(diǎn)擊”。前者使用minicap完成,后者依賴(lài)minitouch。

具體結(jié)構(gòu)看下圖:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

設(shè)備端

  • STF在會(huì)在android設(shè)備上安裝minicap和minitouch。使用minicap來(lái)捕獲屏幕,使用minitouch來(lái)觸發(fā)多點(diǎn)觸控事件,并通過(guò)adb使用socket在服務(wù)端和設(shè)備端進(jìn)行數(shù)據(jù)傳輸。
  • STF還會(huì)在android設(shè)備上安裝STFService.apk,它在設(shè)備后臺(tái)運(yùn)行,提供了一組socket api可以用來(lái)監(jiān)控和執(zhí)行不同的action。 同理,它也是通過(guò)adb和服務(wù)端通信,不過(guò)它使用的是protocal buffer數(shù)據(jù)格式。
  • minirev,直接從Android設(shè)備的端口轉(zhuǎn)發(fā)本地服務(wù),即便不在一個(gè)網(wǎng)段。

服務(wù)端

  • STF的服務(wù)端由多個(gè)不同的獨(dú)立的,基于nodejs的微服務(wù)組成,這些服務(wù)之間是通過(guò)ZeroMQ通信。服務(wù)端可以進(jìn)一步分成Provider 層和Application層。

Provider 層

  • Provider層(stf-provider)主要負(fù)責(zé)和設(shè)備之間進(jìn)行通信。
  • 通過(guò)adb來(lái)監(jiān)控設(shè)備狀態(tài),當(dāng)有新的設(shè)備連接,或者有設(shè)備斷開(kāi)則會(huì)立刻監(jiān)控到。
  • 如果是新的connect設(shè)備,則provider會(huì)folck一個(gè)新的nodejs進(jìn)程(stf-device), 這個(gè)進(jìn)程主要負(fù)責(zé)與該設(shè)備的所有通信。
  • stf由兩個(gè)部分組成,分別是stf-provider和adb。
  • 需要注意的是,provider層的服務(wù)需要跑在物理機(jī)上,所有的設(shè)備需要連著這臺(tái)物理機(jī)。

Application 層

  • Application層則是由stf -api、stf -app和stf -auth等微服務(wù)組成,這些微服務(wù)組成了一個(gè)完整的STF。
  • 從部署的角度來(lái)看,這些服務(wù)可以跑在任意地方,唯一的要求就是,這些服務(wù)能夠通過(guò)網(wǎng)絡(luò)和provider通信,這也就是意味著他們需要在同一個(gè)網(wǎng)段上。

Client 層

  • 使用Angular JS實(shí)現(xiàn)
  • 通過(guò)websocket與服務(wù)進(jìn)行通信

1.3 環(huán)境搭建

強(qiáng)烈建議在centos下利用Docker搭建,相信我,這絕對(duì)是最優(yōu)且最簡(jiǎn)單的方式。

(1)安裝docker服務(wù)

  • 進(jìn)入docker官網(wǎng)下載對(duì)應(yīng)docker安裝包進(jìn)行安裝
  • 命令行執(zhí)行docker version檢查是否安裝成功

(2)利用docker拉取鏡像文件

  • 開(kāi)啟docker服務(wù)
  • 拉取docker鏡像文件
docker pull devicefarmer/stf:latest
docker pull sorccu/adb:latest
docker pull rethinkdb:latest
docker pull openstf/ambassador:latest
docker pull Nginx:latest
  • 通過(guò)docker images查看鏡像文件是否拉取成功

(3) 啟動(dòng)容器

  • 先啟動(dòng)一個(gè)數(shù)據(jù)庫(kù)
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090 
  • 再啟動(dòng)adb service
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
  • 最后啟動(dòng)stf
docker run -d --name stf --net host openstf/stf stf local --public-ip 宿主機(jī)IP地址

一定要注意啟動(dòng)順序,stf 依賴(lài) rethinkdb,所以要先啟動(dòng) rethinkdb,啟動(dòng)完成后使用: docker ps -a 查看是否啟動(dòng)成功,順便獲取stf的container ID。

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

(4) 啟動(dòng)STF程序

  • 首先進(jìn)入stf鏡像目錄
docker exec -it stf的containerID /bin/sh
  • 啟動(dòng)stf命令
stf local --public-ip 宿主機(jī)IP地址 --allow-remote  

啟動(dòng)之后,局域網(wǎng)瀏覽器輸入 http://宿主機(jī)IP地址:7100 可以打開(kāi)STF登錄界面,隨意輸入帳號(hào)郵箱后登錄,不過(guò)目前還沒(méi)有設(shè)備。

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

(5) 連接設(shè)備

由于是在Centos虛擬環(huán)境搭建的平臺(tái),不能進(jìn)行設(shè)備直連,故在局域網(wǎng)windows電腦連接設(shè)備進(jìn)行遠(yuǎn)程連接,在未安裝STF 的電腦上暴露adb端口(搭建SDK環(huán)境),建議采用默認(rèn)端口:5037;

指定端口號(hào)與服務(wù)器進(jìn)行通訊:

adb -a -P 5037 fork-server server

如果出現(xiàn)以下錯(cuò)誤:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

在任務(wù)管理器中關(guān)掉 adb.exe,或使用命令 adb kill-server 關(guān)掉adb程序,重新運(yùn)行上述命令。若還是執(zhí)行失敗,建議換成低版本adb(1.0.32版本)再試試。

直到執(zhí)行命令出現(xiàn)OK。

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

(6)切換到Centos環(huán)境連接windows下移動(dòng)設(shè)備

在啟動(dòng)STF的命令行輸入:

stf provider --name localhost.localdomain --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 900 --public-ip 宿主機(jī)IP地址 --storage-url http://localhost:7100/ --adb-host 局域網(wǎng)windowsIP地址 --adb-port 5037 --vnc-initial-size 600x800 --mute-master never --allow-remote
移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

連接成功后顯示移動(dòng)設(shè)備信息:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

STF設(shè)備列表界面:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

STF設(shè)備操作界面:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

1.4 過(guò)程中可能用到的一些命令

docker

docker start 容器名  #啟動(dòng)某個(gè)容器
docker stop 容器名   #停止某個(gè)容器
docker rm 容器名     #刪除某個(gè)容器

linux

netstat -anp |grep 端口號(hào)   #查看端口占用
kill -9 對(duì)應(yīng)端口PID        #刪除進(jìn)程
移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

2. 基于ATXServer2搭建移動(dòng)設(shè)備管理平臺(tái)

2.1 ATXServer2基本介紹

ATXServer2其實(shí)是在STF基礎(chǔ)上,使用Python3+NodeJS+rethinkdb搭建的一個(gè)設(shè)備管理平臺(tái),功能和STF差不多,但是可以實(shí)現(xiàn)IOS設(shè)備遠(yuǎn)程控制。

2.2 ATXServer2遠(yuǎn)程控制原理簡(jiǎn)介

Android的遠(yuǎn)程控制主要還是基于 minicap+minitouch+atx-agent;

IOS的遠(yuǎn)程控制主要還是基于appium fork的WebDriverAgent,因?yàn)閍ppium在WDA中增加了MJPEG Server,所以讓遠(yuǎn)程投屏成為了可能。(不過(guò)只支持iOS 12.0以上)

2.3 ATXServer2整體項(xiàng)目結(jié)構(gòu)

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

整體項(xiàng)目主要包括四部分:

  • rethinkdb: 一個(gè)開(kāi)源的輕量級(jí)的數(shù)據(jù)庫(kù),是用來(lái)存儲(chǔ)數(shù)據(jù)的。rethinkdb官網(wǎng)地址
  • atxserver2 :這一部分主要負(fù)責(zé)處理數(shù)據(jù),顯示與用戶(hù)的前端交互等等,所以單獨(dú)運(yùn)行atxserver2也可以看到效果,當(dāng)運(yùn)行起來(lái)以候訪問(wèn): IP:4000 就可以看到web界面。
  • atxserver2-android-provider: 這一部分是接入安卓設(shè)備必須啟動(dòng)的項(xiàng)目,主要負(fù)責(zé)安卓設(shè)備和平臺(tái)的交互工作,要想接入安卓設(shè)備必須啟動(dòng)此項(xiàng)目。
  • atxserver2-ios-provider: 這一部分是接入IOS設(shè)備必須啟動(dòng)的項(xiàng)目,主要負(fù)責(zé)IOS設(shè)備和平臺(tái)的交互工作,同樣的要想接入IOS設(shè)備必須啟動(dòng)此項(xiàng)目。(注意需要mac電腦)

項(xiàng)目結(jié)構(gòu):

|-- static  靜態(tài)目錄
|-- temlates  前端界面
|-- web  網(wǎng)頁(yè)代碼
      |-- urls.py 路由整合文件
      |-- settings.py  配置文件
      |-- database.py  數(shù)據(jù)庫(kù)操作相關(guān)
      |-- utils.py  常用配置
      |--views  每個(gè)界面的邏輯
        |--slave.py  與atxslave通信用
        |--devices.py  設(shè)備相關(guān)路由
        |--base.py  基于ReguestHandler的基類(lèi)

還有其他一些文件夾:

  • scripts文件夾: 主要放著一些用于調(diào)試開(kāi)發(fā)的工具類(lèi)等,比如想調(diào)試安卓項(xiàng)目可以單獨(dú)運(yùn)行fake_android_provider.py 與atxserver2-android-provider,并且其中的參數(shù)要改一些,一般不用太關(guān)注這個(gè)文件夾。
  • examples文件夾 : 存放著一個(gè)自動(dòng)化的Demo,采用的自動(dòng)化框架是uiautomator2,設(shè)備占用接口參考了openstf的API。

所有的接口采用token認(rèn)證,每個(gè)請(qǐng)求在 Header中增加 Authorization: Bearer xxxxx-token-xxxx,這個(gè)token值可以在個(gè)人的用戶(hù)信息界面獲取到,也存儲(chǔ)在rethinkdb里; 接口都是通過(guò)web請(qǐng)求調(diào)用,可以用 “httpie” 這個(gè)工具或者直接用python的 request 方法調(diào)用。

2.4 環(huán)境搭建(這里介紹手動(dòng)部署方式)

(1)安裝運(yùn)行rethinkdb數(shù)據(jù)庫(kù)

  • rethinkdb下載安裝地址 https://rethinkdb.com/docs/install
  • 最簡(jiǎn)單的方式,跟STF搭建方法一樣,拉取docker鏡像文件,先啟動(dòng)一個(gè)rethinkdb數(shù)據(jù)庫(kù),可返回上面查看步驟。

(2)克隆代碼到本地

  • 先將代碼clone到本地
git clone https://github.com/openatx/atxserver2.git
  • 安裝依賴(lài),到根目錄執(zhí)行
pip3 install -r requirements.txt

(3)啟動(dòng)

  • 啟動(dòng)atxserver服務(wù),進(jìn)入atx2所在目錄并執(zhí)行
python3 main.py
  • 設(shè)置監(jiān)聽(tīng)端口
python3 main.py --port 4000  # 默認(rèn)監(jiān)聽(tīng)的就是這個(gè)地址
移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

啟動(dòng)之后,局域網(wǎng)瀏覽器打開(kāi):http://宿主機(jī)IP地址:4000, 完成認(rèn)證之后就可以順利的看到設(shè)備列表頁(yè)了。不過(guò)目前還是空的,什么都沒(méi)有。

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

(4)Android設(shè)備接入

接下來(lái),進(jìn)行安卓設(shè)備接入。這時(shí)需要用到另外一個(gè)項(xiàng)目 atxserver2-android-provider 這個(gè)項(xiàng)目運(yùn)行需要Python3.6+和NodeJS(官網(wǎng)強(qiáng)調(diào)node必須使用node8);

  • 先將代碼clone到本地,我是clone到了同局域網(wǎng)windows設(shè)備上,考慮可以連接移動(dòng)設(shè)備。
git clone https://github.com/openatx/atxserver2-android-provider.git
  • 安裝依賴(lài),到atxserver2-android-provider根目錄執(zhí)行
pip3 install -r requirements.txt
  • 檢查移動(dòng)設(shè)備連接
adb devices
  • 啟動(dòng)Provider服務(wù)連接宿主機(jī),進(jìn)入到atxserver2-android-provider根目錄執(zhí)行
python main.py --server 宿主機(jī)IP地址:4000  

Provider可以通過(guò)adb track-devices自動(dòng)發(fā)現(xiàn)已經(jīng)接入的設(shè)備,當(dāng)手機(jī)接入到電腦上時(shí),會(huì)自動(dòng)給手機(jī)安裝minicap,minitouch,atx-agent,app-uiautomator-[test].apk,whatsinput-apk。

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

瀏覽器輸入 宿主機(jī)IP地址:4000 訪問(wèn)ATX server2設(shè)備管理系統(tǒng),設(shè)備列表展示如下:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

ATX server2設(shè)備管理系統(tǒng)設(shè)備控制界面:

移動(dòng)設(shè)備管理平臺(tái)的搭建(基于STF/ATXServer2)

 

3. 總結(jié)

STF主要采用的是JAVA,項(xiàng)目較老,更新維護(hù)稍慢,作者位于國(guó)外,交流不便;主要語(yǔ)言js居多,框架比較完善定型了,另外,不支持蘋(píng)果設(shè)備遠(yuǎn)程連接;

ATXserver2主要使用python3,國(guó)內(nèi)在作者,方便溝通交流;atxserver2更像是一個(gè)內(nèi)核發(fā)動(dòng)機(jī),可以自己diy一些想要的功能,并且支持蘋(píng)果設(shè)備遠(yuǎn)程連接;

基于對(duì)STF與ATXserver2的比較,我們最終選擇在ATXserver2的基礎(chǔ)上二次開(kāi)發(fā),加入一些想要實(shí)現(xiàn)的功能。當(dāng)然,除了在前人種的樹(shù)下乘涼以外,我們更要追求一些新的突破!期待有想法的朋友加入,一起創(chuàng)新!

分享到:
標(biāo)簽:管理平臺(tái) 設(shè)備
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定