2012年8月11日 星期六

使用另一台電腦的 Android 模擬器 (AVD) 除錯

電腦用久了,總是有感情的,也許是習慣了。當開發 Android App 時總要啟動模擬器試一下程式,偏偏舊電腦跑不動模擬器,為了這個原因而換電腦是有點花錢。之前的發文提到 " 使用另一台運行 Android-x86 的電腦除錯 ",但是當開發一些使用 Google API 的 App 時,就需要使用 Android 模擬器 (AVD)。

能否用另一台電腦的 Android 模擬器 (AVD) 測試 App 呢?當然可以!
 
注意:以下的做法只在兩部電腦都執行 Linux 的環境下測試成功,Windows 則尚未測過。

一、在「遠端電腦」上安裝 Android SDK

請參考 " HOWTO Setup Android Development " 的文件,在另一台比較快的 Linux 電腦上安裝 Android SDK。

二、建立「本地電腦」與「遠端電腦」的「終端機」連線

用 SSH 建立「本地電腦」與「遠端電腦」的連結,在「終終機」中的命令為,
[SiB@Celeron-D ~]$ ssh 192.168.10.17 -p 2012 -L 5555:127.0.0.1:5555 -X
其中, " 192.168.10.17 " 是「遠端電腦」的網路位址," 2012 " 是「遠端電腦」中 SSH 的埠號,兩個 " 5555 " 分別為「本地電腦」及「遠端電腦」的 AVD 對應埠號。" -X " 這個參數比較重要,是將在「遠端電腦」上跑的 AVD 之『畫面』重導到「本地電腦」。
 當連線成功後,「終端機」的命令提示會變成「遠端電腦」的提示文字:
[SiB@Celeron-D ~]$ ssh 192.168.10.17 -p 2012 -L 5555:127.0.0.1:5555 -X
SiB@192.168.10.17's password:
Last login: Sat Aug 11 12:32:21 2012 from 192.168.10.12
[SiB@Core-i7 ~]$
上例的「終端機」畫面中,包含兩部電腦的命令提示文字:
「本地電腦」為 " [SiB@Celeron-D ~]$ " 與「遠端電腦」的 " [SiB@Core-i7 ~]$ "。

三、啟動「遠端電腦」的 AVD

在啟動「遠端電腦」的 AVD 前,先測試「本地電腦」上 AVD 的連接狀態,
[SiB@Celeron-D ~]$ Android-SDK/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
 
確定沒有任何 AVD 連接著。接著,在「遠端電腦」啟動 AVD,這時只能使用指令方式,
[SiB@Core-i7 ~]$ Android-SDK/tools/emulator -avd Android_2.2
Failed to create Context 0x3005
emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
emulator: warning: opening audio output failed
上例中, “Android_2.2” 是用「AVD 管理器」所建好的模擬器名稱,若讀者所建立的模擬器名稱不同,請自行替換。出現的「警告訊息」不影響後續的操作、使用。接著,熟悉的畫面就出現了,
當然,這是在「本地電腦」的螢幕上。

四、使用「本地電腦」的 ABD 與 AVD 連線

再測試一次「本地電腦」ADB 連接 AVD 的狀態,
[SiB@Celeron-D ~]$ Android-SDK/platform-tools/adb devices
List of devices attached
 
奇怪! 不是「遠端電腦」的 AVD 已經開啟,畫面都重導到「本地電腦」上了嗎? 怎麼還不行。
原來是「本地電腦」的 ADB 需要重新啟動一次,才會再搜尋一次「網路上可連線」的 AVD,
[SiB@Celeron-D ~]$ Android-SDK/platform-tools/adb kill-server
[SiB@Celeron-D ~]$ Android-SDK/platform-tools/adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
這表示「本地電腦」的 ADB 成功重新啟動了,再測一次「本地電腦」ADB 連接 AVD 的狀態,
[SiB@Celeron-D ~]$ Android-SDK/platform-tools/adb devices
List of devices attached
emulator-5554 device
畫面顯示出偵測到 AVD 並連線的訊息。當然,這是在「遠端電腦」的 AVD,但是畫面是在「本地電腦」的桌面上。

五、可以開始用「遠端電腦」的 AVD 為 App 測試、除錯

終於,可以不用換掉自已熟悉的電腦,繼續享受開發的樂趣了。

已測試版本:

  • Fedora: 14, 17

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)