搭建自己的OpenSTF手機設備雲平臺詳細步驟

目錄

試想一下,如果公司的設備有限,有的人要用一下,只是看一個東西,借走了設備很久不還。 有的時候開發在別的樓層,想看個東西。或者跟你一起重現一下bug. 那麼得跑來跑去的。 有沒有辦法共享一下屏幕?讓他不需要浪費在路上,或者佔用設備資源。
STF就可以解決這個問題。什麼是OpenSTF?
OpenSTF是一個手機設備管理平臺,可以對手機進行遠程管理、調試、遠程手機桌面監控等操作。 這個系統類似於目前很流行的雲測服務比如Testin,雖然網頁上提供的設備很像模擬器中的設備,但是實際上都是真機。
OpenSTF是使用nodejs和angularjs開發,遵循apache licene2.0開源協議,用戶可以對源碼進行修改發佈。 STF把所有的手機都連接到一臺電腦,只要其他電腦和這臺電腦處於同一個局域網下(公司內部一般都是處於一個局域網下), 那麼其他電腦就可以通過瀏覽器輸入地址,訪問這電腦所連接的所有設備。並且可以上面進行操縱。
OpenSTF的功能:
1、 在Web上支持管理上百個android設備。 2、 支持Android多個版本(2.3.3 ~ 8.0),而且不需要root。 3、 實時屏幕操作和顯示。 4、 支持adb connnect遠程連接調試。 5、 可以從PC機鍵盤輸入到遠程的android設備中。 6、 安裝卸載APK。 7、 android設備信息的展示(如:網絡狀態、MIME、android版本、手機型號等等)。 8、 遠程開關機、遠程開關WIFI、截屏、LogCat等等。

Linux(CentOS7)搭建STF

安裝nodejs

安裝jdk

安裝Android-sdk-linux

普通搭建方式

(1) 安裝rethinkdb數據庫

(2) 安裝graphicsmagick

(3) yasm安裝

(4) libsodium安裝

(5) Zeromq安裝

(6) protobuf安裝

(7) pkg-config安裝

(8) stf安裝

(9) Stf Doctor檢測STF

(10) 啓動rethinkdb

(11) 啓動STF

Docker搭建方式

(1)安裝docker

(2)拉取adb鏡像

(3)拉取rethinkdb鏡像

(4)拉取openstf/stf鏡像

 

Mac搭建STF(兼容IOS設備)

(1) 安裝brew

(2) 安裝nodejs

(3) 安裝jdk

(4) 安裝android sdk

(5) 安裝stf依賴

(6) 安裝libimobiledevice等依賴工具

(7)下載WebDriverAgent源碼

(8) 下載Stf源碼


OpenSTF是一個手機設備管理平臺,可以對手機進行遠程管理、調試、遠程手機桌面監控等操作。這個系統類似於目前很流行的雲測服務比如Testin,雖然網頁上提供的設備很像模擬器中的設備,但是實際上都是真機。

官方源碼地址:https://github.com/openstf

OpenSTF是使用nodejs和angularjs開發,遵循apache licene2.0開源協議,用戶可以對源碼進行修改發佈,

  1. 頁面的HTML使用帕格模版引擎.pug
  2. 前端使用的是Angularjs
  3. 後端使用的是的NodeJS
  4. 數據庫使用的是對象型數據庫 Rethinkdb採用的是json字符串格式保存數據

目錄解讀:

/.tx transifex網站相關的配置,主要是用於其它語言翻譯
/bin 啓動文件,其實是連接到lib/cli.js
/docker Docker的相關配置
/lib 後端代碼
/conf 應該是mysql的配置文件,但是目前沒有使用
/doc 關於STF平臺的說明
/test 檢測平臺的狀態
/vendor 需要安裝到手機上的應用或者服務
/node_modules npm相關組件
/rethinkdb_data rethinkdb的數據庫文件
package.json npm所需要的組件集,以json格式保存
………… 其它說明文件與打包

 

Linux(CentOS7)搭建STF

安裝nodejs

配置環境變量:

  • vim /etc/profile

在文件中增加如下內容:

  • export NODE_HOME=/usr/local/node/node-linux-x64
  • export PATH=$PATH:${NODE_HOME}/bin;

安裝完後,查看版本號,是否安裝成功

npm安裝所在目錄:cd /usr/local/node/node-v8.14.0-linux-x64/lib/node_modules/

之前安裝了node10.x,可能是版本的問題,導致安裝stf一直不成功,後面百度資料,降低node版本到8.14

安裝jdk

輸入java -version,可以看到系統自帶的OpenJDK版本信息。

rpm -qa | grep java

下面這幾個可以刪除, 例如:

  • rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64

檢查是否已經刪除成功

java -version

執行安裝

  • 下載JDK文件:/usr/local/node/download/jdk-8u141-linux-x64.tar.gz
  • 解壓JDK安裝文件:tar xvzf jdk-8u141-linux-x64.tar.gz
  • 移動JDK文件:mv jdk1.8.0_141 /usr/local/java

配置環境變量

  • export JAVA_HOME=/usr/local/java/jdk1.8.0_141
  • CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib
  • export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin;

安裝Android-sdk-linux

  • 下載文件:/usr/local/node/download/android-sdk_r24.2-linux.tgz
  • 解壓文件:tar xvzf android-sdk_r24.2-linux.tgz
  • 移動文件:mv android-sdk-linux /usr/local/Android-SDK

配置環境變量

  • export ANDROID_HOME=/usr/local/Android-SDK/android-sdk-linux
  • export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools;

上述執行,是沒有包含SDK tools插件的, 可執行以下步驟獲取:

安裝sdk所有的插件:android update sdk --no-ui

普通搭建方式

(1) 安裝rethinkdb數據庫

  • cd /usr/local
  • mkdir supporters
  • cd /usr/local/supporters
  • wget http://download.rethinkdb.com/centos/7/`uname -m`/rethinkdb.repo -O /etc/yum.repos.d/rethinkdb.repo
  • yum install rethinkdb

可參考:https://rethinkdb.com/docs/start-a-server/

(2) 安裝graphicsmagick

配置環境變量

  • export GRAPHICS_MAGICK_HOME=/usr/local/supporters/config/graphicsmagick
  • export PATH=$PATH:${GRAPHICS_MAGICK_HOME}/bin;

驗證安裝結果:

(3) yasm安裝

  • cd /usr/local/supporters
  • wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
  • sudo tar -zxvf yasm-1.3.0.tar.gz
  • cd yasm-1.3.0
  • ./configure --prefix=/usr/local/supporters/config/yasm
  • sudo make
  • sudo make install

配置環境變量

  • export YASM_HOME=/usr/local/supporters/config/yasm
  • export PATH=$PATH:${YASM_HOME}/bin;

查看安裝結果:

(4) libsodium安裝

  • cd /usr/local/supporters
  • wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
  • sudo tar xvf libsodium-1.0.18.tar.gz
  • cd libsodium-1.0.18/
  • sudo ./configure
  • sudo make
  • sudo make install

查看安裝結果:

(5) Zeromq安裝

  • cd /usr/local/supporters
  • wget https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz
  • sudo tar xvf zeromq-4.2.2.tar.gz
  • cd zeromq-4.2.2/
  • sudo ./configure --without-libsodium
  • sudo make
  • sudo make install

(6) protobuf安裝

  • cd /usr/local/supporters
  • wget https://github.com/google/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz
  • sudo tar xvf protobuf-cpp-3.5.0.tar.gz
  • cd protobuf-3.5.0/
  • sudo ./configure --prefix=/usr/local/supporters/config/protobuf
  • sudo make
  • sudo make install

配置變量:

vim /etc/profile

在文件中增加如下內容:

  • export PROTOBUF_HOME=/usr/local/supporters/config/protobuf
  • export PATH=$PATH:${PROTOBUF_HOME}/bin:${PROTOBUF_HOME}/lib/pkgconfig;

執行:source /etc/profile

查看安裝結果:

(7) pkg-config安裝

  • cd /usr/local/supporters
  • wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
  • sudo tar xvf pkg-config-0.29.2.tar.gz
  • cd pkg-config-0.29.2
  • ./configure --prefix=/usr/local/supporters/config/pkg-config --with-internal-glib
  • make
  • make install

查看安裝結果:

(8) stf安裝

  • npm config set unsafe-perm=true
  • npm install -g stf

(9) Stf Doctor檢測STF

  • cd /usr/local/node/node-linux-x64/lib/node_modules/stf/bin/
  • ./stf doctor

上述圖片檢查,發現有個問題,解決方案:

sudo vim /etc/ld.so.conf

在文件裏添加:/usr/local/lib

運行:ldconfig

再次檢查環境:./stf doctor

(10) 啓動rethinkdb

先啓動rethinkdb,然後再使用stf local啓動平臺

  • cd /usr/local/supporters/
  • mkdir rethinkdb
  • cd /usr/local/supporters/rethinkdb/
  • rethinkdb --bind all --cache-size 8192 --http-port 8090 &

訪問rethinkdb:  http://服務器IP:8090

(11) 啓動STF

cd /usr/local/node/node-linux-x64/lib/node_modules/stf/bin/

./stf local --public-ip 服務器IP --allow-remote --no-cleanup

啓動成功後,訪問stf: http://服務器IP:7100

輸入賬號密碼就可以登錄,密碼是郵件格式,不做校驗。

 

Docker搭建方式

(1)安裝docker

(2)拉取adb鏡像

拉取命令:docker pull sorccu/adb

啓動命令:docker run -di -v /dev/bus/usb:/dev/bus/usb --name=adbd --privileged --net host sorccu/adb:latest

(3)拉取rethinkdb鏡像

拉取命令:docker pull rethinkdb

啓動命令:sudo docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090

(4)拉取openstf/stf鏡像

拉取命令:docker pull openstf/stf

啓動命令:sudo docker run -d --name stf --net host openstf/stf stf local --public-ip 服務器IP --no-cleanup

--no-cleanup 這個參數很重要,之前部署安裝APP的時候,已經安裝好的APP,再stopusing後再連接,發現安裝好的APP不見了,加上這個參數就ok了

run stf的時候需要注意ip的填寫,虛擬機需要打開網絡橋接模式

 

常見問題:

啓動stf會自動安裝stf到手機,但依然不能控制手機。是因爲手機不會自動運行stf的服務器。執行以下命令即可(PS:執行以下命令,保證只有1臺設備,且是需要手工拉起stf服務的設備)

adb -s 設備id shell am start -n jp.co.cyberagent.stf/.IdentityActivity

adb -s 設備id shell am startservice -n jp.co.cyberagent.stf/.Service

 

Mac搭建STF(兼容IOS設備)

IOS設備要依賴WebDriverAgent(簡稱wda)實現端對端UI測試,WebDriverAgent 在 iOS 端實現了一個 WebDriver Server ,藉助這個 server 我們可以遠程控制 iOS 設備, 能同時支持模擬器和真機, 真機運行需要證書和描述文件,個人免費證書也可以,注意配置WebDriverAgentRunnerRunner工程就行。

參考巨人的文章實行搭建:https://testerhome.com/topics/19548

(1) 安裝brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

(2) 安裝nodejs

brew install node -g

安裝下node版本管理工具n

brew install n

這裏node安裝兩個版本,一個最新版,一個是v8.14的版本,appium-doctor檢測適用於最新版node,stf適用於8.14的版本

n指定版本:sudo n 8.14 

n切換版本:sudo n

(3) 安裝jdk

(4) 安裝android sdk

(5) 安裝stf依賴

  • brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config

(6) 安裝libimobiledevice等依賴工具

  • brew install usbmuxd
  • brew link usbmuxd
  • brew install libimobiledevice
  • brew install ideviceinstaller
  • brew install carthage
  • brew install socat

(7)下載WebDriverAgent源碼

git clone https://github.com/mrx1203/WebDriverAgent.git 

 (參考大神源碼,在此源碼基礎上調整安裝個人免費證書)

進入WebDriverAgent目錄,執行進行編譯安裝

  • cd /usr/local/lib/node_modules/WebDriverAgent/
  • ./Scripts/bootstrap.sh

編譯完畢,用Xcode打開WebDriverAgent.xcodeproj,電腦接入iOS設備(注意,這裏調試的都是系統版本爲13.2的)

由於蘋果對證書要求非常嚴格,必須在證書設備列表中設備才能安裝打包後的app.

image

 

  1. 可以使用公司蘋果開發者賬號,需要找開發同學加權限

  2. 可以使用個人免費開發者賬號

這裏安利個人免費安裝證書:

Xcode-----》Preferences-----》Accounts添加apple Id

PROJECT--->WebDriverAgent--->info

TAEGETS--->WebDriverAgentLib--->General

TAEGETS--->WebDriverAgentLib--->Signing & Capabilities

TAEGETS--->WebDriverAgentLib--->Build Settings

TAEGETS--->WebDriverAgentRunner--->Signing&Capblities

TAEGETS--->WebDriverAgentRunner--->BuildSettings

執行安裝證書

(1)Scheme 選擇WebDriverAgentRunner

(2)執行test

test成功後,會發現手機設備自動安裝上了一個WebDriverAgentRunner-Runner.app

在設置---》通用---》描述文件與設備管理 裏面信任這個證書

此時在瀏覽器可以正常打開http://192.168.96.14:8100/status

以上方式就是安裝個人免費證書的步驟了,當然也可以在終端通過命令執行安裝

進入根目錄,執行命令:

Xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=9251e39b63331e52538dc2cc122e72da3d652b41' test

 

設備ID:可以通過執行命令得到:idevices_id -l

(8) 下載Stf源碼

git clone https://github.com/mrx1203/stf.git  

(參考大神的源碼,在此源碼基礎上優化)

執行npm install 自動安裝所需的插件

啓動rethinkdb:

  • cd /usr/local/supporters/rethinkdb/
  • rethinkdb --bind all --cache-size 8192 --http-port 8090 &

編譯stf源碼後,啓動stf

  • cd /usr/local/lib/node_modules/stf/bin/
  • ./stf local --public-ip 服務IP --allow-remote --no-cleanup --wda-path /usr/local/lib/node_modules/WebDriverAgent/ --wda-port 8100

因爲STF源碼中包括有自動xcodebuild證書安裝的部分,所以上面第三步必須測試成功後,再啓動stf

其中會遇到很多問題,見招拆招吧。

 

如果啓動stf遇到該問題ideviceinfo returned an error: Could not connect to lockdownd, error code -21

則嘗試這種方案解決:

sudo chmod -R 777 /var/db/lockdown
brew update
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
brew install ideviceinstaller
flutter doctor (檢測是否成功)
如果還是不行的話請重啓電腦後再執行flutter doctor命令檢測成功與否。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章