http://code.google.com/p/androidbmi/wiki/PlayEmulator
我們已經透過「Eclipse」開發環境,開啟了「ApiDemos」專案。本章將講解如何設定和操作 Android 虛擬機器。
現在我們還不忙著開始寫程式,先花點時間,來看看怎麼在開發環境中,透過「Android 虛擬機器」來執行應用程式吧。
由於在剛開始開發時,我們手邊並不一定已擁有 Android 設備。因此 Android 開發工具亦提供了相當強大的模擬器,能讓我們自由配置,模擬各種硬體規格的設備。在 Android 中一律把 Android 模擬器稱作「Android 虛擬機器」(Android Virtual Device),簡寫為「AVD」。
「Android 軟體開發套件」(SDK) 1.5 以上的版本提供了支援不同目標版本虛擬機器的功能,在使用虛擬機器之前,必須先建立一個虛擬機器後才可在 Eclipse 開發環境中使用。
在1.6版之後可以直接在AVD管理工具中建立虛擬機器。在Eclipse中選擇「Window->Android SDK and AVD Manager」來開啟AVD管理工具,AVD管理工具的使用方式在管理 SDK一章有提及,不在此詳述。
SDK 中也提供了一個「android」命令行工具(在 android-sdk/tools 中),可以用來建立新專案或是管理虛擬機器。在此我們使用「android」命令行工具來新建立一個虛擬機器。
首先,把「android-sdk/tools 」目錄加入系統路徑,我們以後就可以在任何地方使用「android-sdk/tools 」目錄下的各種命令。
在 Windows 2000、XP、2003、Windows 7 這些作業系統裡,點選「控制台 > 系統 > 進階 > 環境變數」。在「系統變數(S)」欄中,選取「PATH」變數名稱後,再點選「編輯(I)」按鈕。
再此假設您安裝 Android SDK 的路徑是「C:\android-sdk\tools」,接著在彈出的視窗中將「;C:\android-sdk\tools」(注意要以分號隔開)這字串添在原本的字串之後,按下確定後重新啟動作業系統。
重開系統後選擇「開始 > 執行」,在彈出的輸入框中輸入「cmd」,即可開啟命令行工具並繼續以下的動作。
或是您也可以直接打開命令行,進入「android-sdk/tools 」目錄,輸入以下命令:
$ android list targets
在沒有將 Android SDK 加入路徑的情況下,在 Linux 或 Mac 環境中要輸入
$ ./android list targets
螢幕上會列出所有支援的虛擬機器類型
$ android list targets Available Android targets: id: 1 or "android-5" Name: Android 2.0 Type: Platform API level: 5 Revision: 1 Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854 id: 2 or "Google Inc.:Google APIs:5" Name: Google APIs Type: Add-On Vendor: Google Inc. Revision: 1 Description: Android + Google APIs Based on Android 2.0 (API level 5) Libraries: * com.google.android.maps (maps.jar) API for Google Maps Skins: WVGA854, WQVGA400, HVGA (default), WQVGA432, WVGA800, QVGA
在這邊列出了三種虛擬機器類型。分別是編號(id)為 1 的 Android 2.0 虛擬機器,與編號(id)為 2 的「Google APIs」,Google 把自己提供的應用程式(如 Google Map)放在「Google APIs」這個虛擬機器類型中,因此要開發 Google Map 等 Google 專屬應用程式時,就必須先建立「Google APIs」這類型的虛擬機器,稍後才能在適當的虛擬機器上作驗證。
我們現在來建立一個基本的 Android SDK 2.0 虛擬機器。
在命令行中輸入以下命令:
$ android create avd --target 1 --name eclair
這段命令的意思是:使用「android create avd」命令來建立一個新的虛擬機器,「 --target 1」參數的意思是這個虛擬機器使用 id 為 1 的 SDK 套件(Android 1.5),「--name eclair」參數的意思是將這個建立的虛擬機器命名為「eclair」。
產生的結果如下
$ android create avd --target 1 --name eclair Android 2.0 is a basic Android platform. Do you wish to create a custom hardware profile [no] Created AVD 'eclair' based on Android 2.0
我們可以使用 「Android」命令行工具提供的「list avd」命令,來列出所有我們已經建立的模擬器。
在命令行中輸入以下命令:
$ android list avd
產生的結果如下:
$ android list avd Available Android Virtual Devices: Name: eclair Path: /Users/mac/.android/avd/cupcake.avd Target: Android 2.0 (API level 5) Skin: HVGA
使用「 android list avd」命令看到有輸出,即表示已成功建立虛擬機器,可以回到 Eclipse 環境來,設定執行應用程式專案所需的環境參數了。
要執行 ApiDemos 程式前,我們得在開發環境中,事先設定好一些用來執行 ApiDemos 程式的環境參數。 以後使用其他程式專案時,我們也能用同樣的方式,讓這些程式在我們的開發環境中運行。
首先,我們透過選單列上的「Run」(執行)選單,選擇「開啟執行參數設定」(Run-> Debug Configurations...) 進入運行環境參數設定畫面。
進入設定畫面後,在視窗左側會有一整排 Eclipse 支援的運行設定,我們從中找到 "Android Application"(Android 應用程式)項目,按下滑鼠右鍵,點選 "New"(新增)選項。
選擇 「New」 選項後,在「Android Application」項目下方會多出一筆執行項目。
我們可以在 Name 欄位上輸入一個代表這個環境參數的名稱,在此我們輸入與專案名稱相同的「ApiDemos」。
在「Project」欄位右方,點選「Browse...」按鈕,開啟「專案選擇」(Project Selection)視窗,選擇「ApiDemos」專案並點選「OK」按鈕,以選擇要執行的專案。
在 「Launch Action」 選單中,確認預設選擇的是「Launch Default Activity」。
至此我們就完成了模擬器環境參數的設定。 點選右下角的「Debug」按鈕,Eclipse 就會啟動 Android 虛擬機器。
小技巧:
在選單列中,也可以選擇設定「Run Configuration...」選項。這時我們得到的是一個幾乎完全相同的環境參數設定畫面,只是右下角的「Debug」按鈕變成了「Run」按鈕。「Debug」與「Run」模式的環境參數設定可以共用,差別在於「Debug」模式下可以使用在之後章節中會介紹的 logd,來顯示一些開發時所需的額外訊息。
當我們設定好之後,以後碰到要再次啟動虛擬機器的情況時,只要在螢幕左上角的「Debug」或「Run」圖示右側小箭頭上按一下,從彈出的選單中選擇剛剛設定的環境參數名稱,虛擬機器即開始執行,並安裝好我們所指定的專案應用程式。
在建立虛擬機器的時候,我們可以透過「skin」欄位來選擇預設的虛擬機器外觀。「skin」欄位中會列出目標(Target)版本支援的所有外觀。「HVGA」(解析度 480x320)、「QVGA」(解析度 320x240)等分別代表著各種不同畫面的解析度
在命令列上執行「android list targets」命令後,我們可以看到螢幕上列出所有支援的模擬器類型。舉我們剛才建立過的(id 1)虛擬機器為例,列出訊息如下:
id: 1 Name: Android 2.0 Type: Platform API level: 5 Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854
其中 Skins 欄位中會列出所有支援的模擬器佈景,預設有多種畫面配置選項可選擇。
要建立「QVGA」模式的模擬器,則在前一節「android create avd」命令後,附加上「--skin QVGA」選項即可。要將預設的「HVGA 直式」顯示改為橫式,則可以透過使用快速鍵,直接切換螢幕來達成。
在 Windows 作業系統上按下 「Ctrl」和「F12」鍵 ,或是在 Mac OS X 作業系統上同時按下「fn」 、「Control」和「F12」鍵,螢幕就會從預設的直式顯示改成橫式顯示,再按一次則切換回原來的直式顯示。
我們已經順利地啟動了虛擬機器,那麼,該怎麼移除安裝到虛擬機器上的程式哩?
Android SDK 中提供一個 adb (Android Debugger) 命令行工具 (在 android-sdk/tools 中),我們可以用裡面的 shell 工具連上虛擬機器來移除應用程式。在某些平台上,這些動作可能需要擁有 root 權限才能執行。
首先打開命令列,啟動 adb shell
$ adb shell
接著切換到 data/app 目錄中
$ cd data/app/
使用 ls 命令(等同 windows 上命令行的 dir 命令)來檢視檔案列表
# ls com.example.android.apis.apk
接著使用 rm 命令來刪除 ApiDemos 應用程式
# rm com.example.android.apis.apk # ls
我們可以使用「android list avd」命令來列出所有的虛擬機器
$ android list avd Available Android Virtual Devices: Name: eclair Path: /Users/mac/.android/avd/cupcake.avd Target: Android 2.0 (API level 5) Skin: HVGA
表示現在系統中有一個名為 eclair 的虛擬機器。 我們可以使用「android delete avd --name eclair」命令來刪除名稱為「eclair」的虛擬機器。
$ android delete avd --name eclair AVD 'eclair' deleted.
刪除後再次執行「android list avd」命令,得到的結果為
$ android list avd Available Android Virtual Devices:
表示系統中已經不存在任何模擬器,我們真的已經將虛擬機器刪除了。
閱讀參考