一、什么是OpenSTF?
STF又稱OpenSTF,它是一個手機設備管理平台,可以對手機進行遠程管理、調試、遠程手機桌面監控等操作。這個系統類似於目前很流行的雲測服務比如Testin,雖然網頁上提供的設備很像模擬器中的設備,但是實際上都是真機。
OpenSTF是使用nodejs和angularjs開發,遵循apache licene2.0開源協議,用戶可以對源碼進行修改發布。(源碼地址:https://github.com/openstf)
二、STF的功能
1、 在Web上支持管理上百個android設備。
2、 支持Android多個版本(2.3.3 ~ 9.0),而且不需要root。
3、 實時屏幕操作和顯示。
4、 支持adb connnect遠程連接調試。
5、 可以從PC機鍵盤輸入到遠程的android設備中。
6、 安裝卸載APK。
7、 android設備信息的展示(如:網絡狀態、MIME、android版本、手機型號等等)。
8、 遠程開關機、遠程開關WIFI、截屏、LogCat等等。
三、STF環境搭建
1.搭建准備
VMware workstation、Ubuntu鏡像文件(http://mirrors.melbourne.co.uk/ubuntu-releases/)目前作者選擇的是18.10的ubuntu-18.10-desktop-amd64.iso。
2.環境搭建
①詳細搭建ubuntu虛擬環境作者不在這里詳細介紹,當然還有Linux搭建JDK、Android SDK環境,此處給出國內下載地址,讀者可以自行下載安裝配置(http://tools.android-studio.org/index.php/sdk/)。
②安裝docker
默認ubuntu虛擬環境已經搭建好:
命令行如下:
更新軟件:sudo apt-get update
安裝:sudo apt-get install docker(這里可能會報各種依賴的錯誤,按照提示apt install -f 依賴包、或者按照提示解決--fix-missing即可)
安裝:sudo apt-get install docker.io
查看docker 鏡像 :sudo docker images(這邊由於還沒安裝任何鏡像,列表暫時為空)
③從docker上拉取STF相關的鏡像
備注:拉取鏡像時,由於國內某些原因可能拉取的比較慢,作者推薦使用aliyun鏡像加速器(又快還不要錢,好產品廣告一波),可登陸阿里雲官網(https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)根據詳細說明配置加速器。
STF鏡像:sudo docker pull openstf/stf:latest
android adb 鏡像:sudo docker pull sorccu/adb:latest
rethinkdb鏡像:sudo docker pull rethinkdb:latest
openstf鏡像:sudo docker pull openstf/ambassador:latest
nginx 代理鏡像:sudo docker pull nginx:latest
查看已經拉取的docker鏡像:sudo docker images
④修改虛擬機網絡設置
虛擬機頂部點擊“編輯”——“虛擬網絡編輯器”
選擇VMnet0 選擇橋接模式
虛擬機頂部點擊“虛擬機”——“設置”
選擇橋接模式
更改ip:sudo vi /etc/network/interfaces
設置DNS文件:vi /etc/resolv.conf 輸入192.168.43.XXX,網關要和上圖一樣,由於這是一次性的,也就是重啟之后就會失效,所以我們要去修改下啟動文件
修改啟動腳本: vi /etc/rc.local 輸入 echo "nameserver 192.168.43.XXX" >> /etc/resolv.conf,網關要一致
啟動配置文件:/etc/init.d/networking restart
這里可能會報錯:
root@michael-virtual-machine:/home/michael# /etc/init.d/networking start
[....] Starting networking (via systemctl): networking.serviceJob for networking.service failed because the control process exited with error code.
See "systemctl status networking.service" and "journalctl -xe" for details.
failed!
這里我們使用這個嘗試:
sudo service network-manager restart
檢驗:
ping 物理機IP地址,可以ping通
⑤啟動鏡像(注意有先后順序)
先啟動一個數據庫:
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
再啟動adb service:
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
再啟動stf 啟動的時配置的IP地址為你虛擬機橋接的網址:
docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.43.55
查看 啟動的docker鏡像 命令:
sudo docker ps -a
⑥大功告成:
虛擬機中輸入:192.168.43.23:7100
用戶名:隨意輸入
郵箱:符合郵箱格式即可
四、尾聲
如果重啟完虛擬機發現無法聯網:
一、網絡重新設置
1.在VMWare中的編輯菜單中,選擇“虛擬網絡編輯器”,還原設置,然后選中VMnet0,將其設為橋接
2.接下來設置剛安裝好的Ubuntu虛擬機,將網絡適配器選為自定義VMnet0
3.啟動虛擬機系統Ubuntu,在系統圖形界面中,選擇網絡設置,指定IP4的網絡地址及DNS
二、重啟docker
1.切換到root用戶: su root
2.設置開機自動啟動docker服務:systemctl enable docker
3.啟動docker:systemctl start docker
4.此時重啟docker后images會全部退出(sudo docker ps -a 鏡像的STATUS應該全部是EXITED),需要重啟所有鏡像(stf、adbd、rethinkdb)
5.啟動stf :sudo docker start stf
6.啟動adbd:sudo docker start adbd
7.啟動rethinkdb:sudo docker start rethinkdb