筆者為了搭這個環境,嘔心瀝血花了3/4天,calabash android在Windows下安裝算是比較復雜,在MAC上比較簡單
一、環境搭建
首先,先說我們需要的環境
1、JDK
2、Android SDK
這兩個環境不多說,不清楚的可以參照“UI Automator環境配置”,里面描述的很詳細
3、安裝Ant,網址:http://ant.apache.org/bindownload.cgi?設置環境變量:ANT_HOME=D:\apache-ant-1.10.5? ? ? ?Path添加內容:?";%ANT_HOME%\bin"
選擇apche-ant-1.10.5-bin.zip下載
4、ruby:http://rubyinstaller.org/downloads/(筆者下載了比較穩定的2.3.3,為什么下這個,我嘗試了無數遍,幾乎每個版本都嘗試安裝,若ruby<2.0.0,會出現版本過低,無法簽名的詭異事件,若版本過高,和之后我們需要安裝的calabash-android會存在沖突),安裝ruby時,勾選自動創建環境變量,若ruby版本較高,會有轉換UFT-8的彈框,也需要勾選上,防止后面運行時要轉換格式
!?。。∠螺druby2.3.3之后自帶的ruby zip是1.2.2,注意這里有一個大坑,再后面build test server時一直提示ruby zip 1.2.2不是自定義的壓縮包之類的,所以ruby安裝成功之后我們需要把ruby zip 1.2.2替換成1.2.2。替換方法:https://rubygems.org/gems/rubyzip/versions/1.2.0中點擊獲取1.2.1的地址,在cmd中輸入gem install rubyzip -v 1.2.1運行即可
5、Dev-Kit:4.7.2 x64(重要:需要根據ruby安裝版本選擇),因為我的電腦是64bit,所以ruby和Dev-Kit都選擇64bit下載安裝
以上動作都執行完畢后,我們需要安裝calabash-android,安裝路徑可以選擇在cd /d devkit下(之前很多安裝教程都介紹獲取taobao鏡像安裝,但現在這個網址已經不維護了,我們使用一個簡單的方法來替代它,直接在devkit下輸入gem install calabash-android來安裝,注意,使用這個方法安裝的是calabash-android的最新版本,如果你直接使用最新版本,后面又有一個大坑等你,那就是你的簽名與創建的test server不一致,導致你的腳本永遠run不起來,為了解決這個問題我們安裝較低版本calabash-android 0.9.5,網址:https://rubygems.org/gems/calabash-android)
關于ruby zip 1.2.2與calabash-android 0.9.8導致的錯誤請參考:https://github.com/calabash/calabash-android/issues/802
Ok,到這里,我們所有的環境都安裝好了,現在我們檢查一下,分別輸入:javac version,android,ruby -v,calabash-android version,返回版本及正確信息即可,代表我們的環境已經沒有問題
二、實際運行
1、我們到calabash官網下載測試demo來檢驗我們的環境是否可以成功跑通:下載測試用例:https://github.com/bootstraponline/calabash_android_example,直接點download即可。
我們自己建立一個類似于“android test”的文件夾
命令符cd到這個路徑下,輸入calabash-androi gen來鍵我們的骨架,features目錄下有個my_first.feature文件,這個就是用例文件,另外生成了兩個文件夾,一個step_definitions用來存放一些自定義step文件,一個support存放初始化文件
2、對測試apk重簽名,簽名方法:calabash-android resign 測試apk,注意在這里你可能會遇到錯誤,提示你找不到keystore,這是你需要輸入calabash-android setup進行簽名設置
keytool -genkey -v -keystore C:\Users\Administrator\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
根據提示依次輸入
1)keystore路徑:C:\Users\Administrator\.android\debug.keystore
2)password:android
3)依賴alias:androiddebugkey
設置完后再次重簽即可成功
3、你需要創建一個test server來支持apk跑通,calabash-android build 測試APK,此時你可能會遇到GBK錯誤。我們需要修改cmd控制臺編碼,輸入chcp 65001進行編碼切換,然后繼續運行,你可以看到服務已經被建立了,這就是用于安裝到測試機上面的測試服務apk。
4、最后我們可以開始run我們的apk了,如果你的腳本中有中文,可能不會被識別,你需要執行chcp 936切換GBK,再次run一下,成功??!
三、calabash-android遇到的坑總結
1)第一大坑,自動安裝calabash-android最新版,導致簽名文件永遠不成功,遂將版本降至0.9.5,gem install calabash-android -v 0.9.5
2)第二大坑,ruby zip 1.2.2,永遠提示1.2.2不是標準的ruby zip文件,遂安裝1.2.1版本,gem install?rubyzip -v 1.2.1
3)第三大坑,將calabash-android降下來后,又提示ruby有過時的依賴性,(因為我之前一直都安裝最新ruby版本),遂將ruby降至2.3.3