為了使用 monkeyrunner 執行自動化腳本,首要之舉便是安裝相關的軟體。若看官們已有相應的環境(使用 monkeyrunner 並不需要整個 Android Studio),便可略過此步驟,否則請跟著以下步驟來設定環境:
- 安裝 JRE 8
到 https://www.oracle.com/technetwork/java/javase/downloads/index.html 下載並安裝 JRE 8。
若要安裝其它版本的 JRE,請確認使用的 Android tools 對 JRE 的支援度。
- 安裝 Android tools
步驟 動作 1. 到 https://developer.android.com/studio/ 的 Command line tools only 項目下下載適當平台的 SDK tools package。 2. 將下載的 SDK tools package 解壓縮,比如解壓縮到 C:\Android\ 下,那麼完成解壓縮後,便可找到 C:\Android\tools 資料夾。 3. 在命令提示字元內輸入 C:\Android\tools\bin\sdkmanager platform-tools 以下載 platform-tools,依提示完成後,便可找到 C:\Android\platform-tools 資料夾。 4. 在命令提示字元內輸入 C:\Android\tools\bin\sdkmanager extras;google;usb_driver 以下載 USB 驅動程式,依提示完成後,便可找到 C:\Android\extras\google\usb_driver 資料夾。 -
設置電腦的環境變數
變數 值 說明 ANDROID_SDK_HOME <SDK 安裝路徑> 如 C:\Android Path %ANDROID_SDK_HOME%\platform-tools
%ANDROID_SDK_HOME%\tools\bin%ANDROID_SDK_HOME%\platform-tools:為了使用 adb.exe
%ANDROID_SDK_HOME%\tools\bin:為了使用 monkeyrunner.bat -
確認 monkeyrunner 可正常執行
因某些版本的 SDK tools package 提供的 monkeyrunner.bat 有錯誤,所以安裝完後須確認 monkeyrunner.bat 能否正常執行。
以 sdk-tools-windows-4333796.zip 為例,當在命令提示字元內輸入 monkeyrunner 後,會出現如以下錯誤訊息:C:\Users\tester>monkeyrunner SWT folder '..\framework\x86_64' does not exist. Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
請按以下步驟修正:步驟 動作 1. 以記事本開啟 tools\bin\monkeyrunner.bat 2. 將 set frameworkdir=lib 改為 set frameworkdir=..\lib
將 set frameworkdir=lib 改為 set frameworkdir=..\lib
再次執行 monkeyrunner,仍然有錯誤訊息:C:\Users\tester>monkeyrunner E/adb: Cannot run program "..\framework\adb.exe": CreateProcess error=2, 系統找不到指定的檔案。
E/adb: Cannot run program "..\framework\adb.exe": CreateProcess error=2, 系統找不到指定的檔案。
請按以下步驟修正:步驟 動作 1. 以記事本開啟 tools\bin\monkeyrunner.bat 2. 將 -Dcom.android.monkeyrunner.bindir=..\framework 改為 -Dcom.android.monkeyrunner.bindir=..\..\platform-tools
修正錯誤: E/adb: Cannot run program "..\framework\adb.exe": CreateProcess error=2, 系統找不到指定的檔案。
其實這裡有個很弔詭的現象,就是:
不管將 -Dcom.android.monkeyrunner.bindi 設成什麼都可以讓 monkeyrunner 正常執行,
只要路徑型式是 "..\..\XXX" 的都行,
即使根本不存在這個目錄,
所以看官們真的可以設成 -Dcom.android.monkeyrunner.bindir=..\..\XXX 這種奇葩字串。
若分析 tools\lib\chimpchat-26.0.0-dev.jar 的原始碼 AdbBackend.java 的 findAdb(),便可得知原因:
因 mrParentLocation 是 "..\..\XXX",private String findAdb() { String mrParentLocation = System.getProperty("com.android.monkeyrunner.bindir"); //$NON-NLS-1$ // in the new SDK, adb is in the platform-tools, but when run from the command line // in the Android source tree, then adb is next to monkeyrunner. if (mrParentLocation != null && mrParentLocation.length() != 0) { // check if there's a platform-tools folder File platformTools = new File(new File(mrParentLocation).getParent(), SdkConstants.FD_PLATFORM_TOOLS); if (platformTools.isDirectory()) { return platformTools.getAbsolutePath() + File.separator + SdkConstants.FN_ADB; } return mrParentLocation + File.separator + SdkConstants.FN_ADB; } return SdkConstants.FN_ADB; }
所以第 8 行的 new File(mrParentLocation).getParent() 的路徑會是 "..\..\",
也就是 "C:\Android\tools\bin\..\..\",
即 "C:\Android\",
而 SdkConstants.FD_PLATFORM_TOOLS 是 "platform-tools",
所以 platformTools 的路徑將是 "C:\Android\platform-tools",
因此會由第 11 行將 adb 的路徑傳回。
再次執行 monkeyrunner,成功:
若要離開此畫面,請輸入 Ctrl-Z
- 啟用手機的偵錯功能
要執行 monkeyrunner 前必須先將開發人員選項的選單啟用,並啟用 Android 偵錯功能,步驟為:步驟 動作 1. 進入手機的系統設定畫面 2. 進入關於畫面 3. 點擊版本號碼 7 次以啟用開發人員選項的選單 4. 回到系統設定畫面進入開發人員選項 5. 啟用 USB 或 ADB 偵錯功能 6. 安裝 ADB 裝置的驅動程式(即先前下載的 USB 驅動程式,如 C:\Android\extras\google\usb_driver)
因每家手機的設定畫面不盡相同,所以步驟 2 和 5 的部分需要看官找找,其中步驟 5 通常不是必要,因為啟用開發人員選項的選單後,將 Android 裝置重新與電腦連線,並在命令提示字元裡執行 adb devices 後,手機端應該便會跳出選項詢問看官是否允許啟用偵錯功能。
沒有留言:
張貼留言