可以分為三種情況:
1. 只有一個Master主機(jī)的情況,即只有一臺裝了STF和ADB的主機(jī)萝嘁,連接了一些設(shè)備,通過訪問這個主機(jī)來管理這些設(shè)備。
2. 一個Master主機(jī)+若干個SLAVE的情況靡砌,Master主機(jī)安裝STF和ADB,SLAVE支持ADB珊楼,安裝/未安裝STF:
? ? 2.1 SLVAE主機(jī)不支持STF
? ? 2.2 SLAVE主機(jī)支持STF
一通殃、只有一個Master主機(jī)的情況:
1. 安裝后首先要開啟DB服務(wù),直接運(yùn)行即可:
rethinkdb
2. 啟動STF服務(wù):
如果只是簡單的測試或者本地使用,直接運(yùn)行 stf local即可
這樣的話你直接在瀏覽器中輸入:http://localhost:7100/#!/devices 即可管理所有的設(shè)備画舌。但是你無法在非本機(jī)的瀏覽器通過http://10.1.137.158:7100/#!/devices 的方式去訪問堕担,會直接跳轉(zhuǎn)成:http://localhost:7100/auth/mock/。
如果想要能夠?qū)崿F(xiàn)遠(yuǎn)程訪問就需要運(yùn)行:
~ stf local --public-ip 10.1.137.158
后面是本機(jī)的IP地址曲聂,這樣相當(dāng)于把你的IP地址設(shè)置為一個公開可訪問的(局域網(wǎng)內(nèi))霹购。
下圖是我用手機(jī)瀏覽器訪問的界面(局域網(wǎng)):
二、一個Master主機(jī)+若干個SLAVE的情況
如果你需要管理的設(shè)備都比較集中朋腋,或者比較少齐疙,那么將這些設(shè)備都連接到這一個啟用了STF服務(wù)的機(jī)器上,然后你通過瀏覽器來訪問這個機(jī)器從而操作這些手機(jī)就可以了旭咽。接下來你的工作就只是想辦法把這些設(shè)備都連接到這個機(jī)器上而已贞奋。
如果你的機(jī)器比較分散(公司的辦公地點(diǎn)在北京和上海兩個地方,都有設(shè)備需要管理)或者比較多穷绵,且希望能統(tǒng)一管理轿塔,就需要想更多的辦法:
Master主機(jī)安裝STF和ADB,SLAVE支持ADB仲墨,安裝/未安裝STF勾缭。
Master主機(jī)開啟STF服務(wù),SLAVE主機(jī)通過adb連接測試設(shè)備宗收,SLAVE和Master主機(jī)之間建立連接漫拭,將所連接的測試設(shè)備橋接到Master主機(jī)上去,這樣用戶通過訪問Master主機(jī)就可以訪問所有的測試設(shè)備混稽。測試設(shè)備具體所在的位置對于用戶來說是透明的采驻,都只是顯示連接到了Master主機(jī)而已。
環(huán)境概況:
Linux 服務(wù)器匈勋,安裝stf完整組件礼旅,支持android sdk,作為master節(jié)點(diǎn)洽洁。[IP:10.1.132.193]
MAC痘系,安裝stf(本例中并沒有使用也沒有啟用)饿自,支持android sdk汰翠。[IP:10.1.137.158]
兩臺電腦網(wǎng)絡(luò)互通。
Linux服務(wù)器自己連接的手機(jī)設(shè)備(WIFI連接):
MAC連接的手機(jī)設(shè)備(USB連接):
1昭雌、Mac(10.1.137.158)上啟動 adb server 并對外暴露 5037 端口執(zhí)行:
????adb -a -P 5037 fork-server server
????但是如果adb版本比較高的話复唤,就會提示reply fd for adb server to client communication not specified.用如下命令替換:
????adb nodaemon server -a
2、在Linux服務(wù)器(10.1.132.193)上啟動stf服務(wù)
? ? rethinkdb
? ? stf local --public-ip 10.1.132.193 --allow-remote
3烛卧、通過配置 adb host 的方式和 MAC 主機(jī)互連
????在Master機(jī)器(Linux:10.1.132.193)上執(zhí)行:
stf provider --name CentOS7.4-wangjing-109 --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 20000 --public-ip 10.1.132.193 --storage-url http://localhost:7100/ --adb-host 10.1.137.158 --adb-port 5037 --vnc-initial-size 600x800 --allow-remote
連接成功后佛纫,在SLAVE機(jī)器(Mac:10.1.137.158)上展示如下:
在Master機(jī)器(Linux:10.1.132.193)上展示如下:
紅框部分就是連接到了SLAVE所連接的設(shè)備(目前是offline狀態(tài))。
從別的設(shè)備瀏覽器上訪問的情況如下:
可以看到顯示的Location是Master主機(jī)的名稱,這時從SLAVE機(jī)器(Mac:10.1.137.158)上去adb devices也是沒有了e115ac6d這個設(shè)備了呈宇。它的作用就是將所連接的設(shè)備通過自己這個橋梁連接到Master機(jī)器(Linux:10.1.132.193)上好爬。
補(bǔ)充說明(上面沒有SLAVE沒有開啟STF,相當(dāng)于是沒有裝STF的情況甥啄。裝有STF的還沒有實(shí)踐存炮,先放在下面作參考)
上述操作行為,僅針對其它操作系統(tǒng)上沒有安裝stf型豁,所以采用 adb host 的方式連上對應(yīng)操作系統(tǒng)上的安卓設(shè)備僵蛛,假如某此系統(tǒng)服務(wù)上已安裝stf相應(yīng)組件,
如:10.16.6.63_Liunx主機(jī)迎变,安裝了 stf充尉,想將Liunx主機(jī)的安卓設(shè)備連接到主Master(MAC:172.17.9.49)平臺上。
通過配置新的 provider 連上Liunx 主機(jī)上的設(shè)備:
在Liunx主機(jī)上啟動 stf provider 【差異在于衣形,不需要增加--adb-host】
stf provider --name mikezhoudeMac-mini.local --min-port 7400 --max-port 7700 --connect-sub tcp://172.17.9.49:7114 --connect-push tcp://172.17.9.49:7116 --group-timeout 20000 --public-ip 172.17.9.49 --storage-url?http://172.17.9.49:7100/?--vnc-initial-size 600x800 --allow-remote
nohup stf local --public-ip 10.1.132.193 --allow-remote &
主要參考:
STF [STF 手機(jī)設(shè)備管理平臺] 連接其它操作系統(tǒng)上的安卓設(shè)備實(shí)操介紹(該文的作者寫了好幾篇STF相關(guān)的文章驼侠,可以一并查看 https://testerhome.com/mikezhou)
stf 連接各操作系統(tǒng)上安卓設(shè)備的操作方法分享
六、使用
1. 遠(yuǎn)程控制
搭建好環(huán)境之后谆吴,這就是一臺連接著N臺Android手機(jī)的服務(wù)器了(這個服務(wù)器可能是放在你們公司某個神秘的地方倒源,一般稱為無線實(shí)驗(yàn)室),在上圖的手機(jī)控制界面可以看到:
這時候句狼,在你自己的電腦上(客戶端)笋熬,通過命令行輸入adb connect 192.168.1.102:7401,就可以將自己的電腦連接到遠(yuǎn)程服務(wù)器上的手機(jī)真機(jī)腻菇,就好像手機(jī)是連接在自己電腦上一樣胳螟,你可以在Android Studio中Android Device Monitor上看到手機(jī)硬件,可以直接打斷點(diǎn)debug筹吐。