My favorites | Sign in
Logo
                
Search
for
Updated Nov 11, 2009 by gasolin
Labels: tw, Emulator
PlayEmulator  
操作 Android 虛擬機器

使用 Android 虛擬機器

我們已經透過「Eclipse」開發環境,開啟了「ApiDemos」專案。本章將講解如何設定和操作 Android 虛擬機器。

設定 Android 虛擬機器

現在我們還不忙著開始寫程式,先花點時間,來看看怎麼在開發環境中,透過「Android 虛擬機器」來執行應用程式吧。

由於在剛開始開發時,我們手邊並不一定已擁有 Android 設備。因此 Android 開發工具亦提供了相當強大的模擬器,能讓我們自由配置,模擬各種硬體規格的設備。在 Android 中一律把 Android 模擬器稱作「Android 虛擬機器」(Android Virtual Device),簡寫為「AVD」。

「Android 軟體開發套件」(SDK) 1.5 以上的版本提供了支援不同目標版本虛擬機器的功能,在使用虛擬機器之前,必須先建立一個虛擬機器後才可在 Eclipse 開發環境中使用。

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,來顯示一些開發時所需的額外訊息。

再次啟動 Android 虛擬機器

當我們設定好之後,以後碰到要再次啟動虛擬機器的情況時,只要在螢幕左上角的「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」 和「7」鍵,螢幕就會從預設的直式顯示改成橫式顯示,再按一次則切換回原來的直式顯示。

移除程式

我們已經順利地啟動了虛擬機器,那麼,該怎麼移除安裝到虛擬機器上的程式哩?

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:

表示系統中已經不存在任何模擬器,我們真的已經將虛擬機器刪除了。

閱讀參考

< 開啟現有專案 | 回目錄 | 建立一個 Android 程式 >


對於本章,您還期望知道什麼樣的內容呢?請在下方提出建議!


Comment by gasolin, Oct 17, 2008

如何移除程式的附圖說明 http://www.mymobisoft.com/bbs/viewtopic.php?f=2&t=114

Comment by liangqinfei, May 03, 2009

刚测试过,在PC上,XP系统,CTRL(左边的)+F11,CTRL+F12 切换

Comment by keino...@hotmail.com, Jul 02, 2009

在移除程式那部份似乎有點問題 照著作都不行 指令碼有誤!?

Comment by chichanchou, Jul 19, 2009

跟keino一樣,在移除程式那部份也有問題。 敲./adb shell會return "error: device not found",但我模擬器已經開起來run了

Comment by gasolin, Jul 19, 2009

device not found 表示沒抓到模擬器, 可以重開再試看看. 先下 adb devices 命令, 確定有機器/模擬器連著吧

Comment by dennis.lan, Aug 12, 2009

1.5 r3 中已经不允许设 skin 了

C:\Documents and Settings\Dennis>android create avd -t 3 -n oPhone -s G1 Valid skins: HVGA (default), HVGA-L, QVGA-P, HVGA-P, QVGA-L Error: 'G1' is not a valid skin name or size (NNNxMMM)

Comment by gasolin, Aug 12, 2009

dennis.lan: 看訊息是你沒有把 G1 檔案夾放到 skins 目錄里, 試試看用 HVGA-L 或 QVGA-P 應該就可以了

Comment by alen.chang, Aug 13, 2009

我在create avd時, 會出現以下的訊息Error: C:\Documents and Settings\xxxxx\.android\avd\cupcake.ini (系統找不到指定的路徑。), 而我有看到.android的資料夾, 但進不去, 也刪不掉, 請問我是那個步驟有做錯嗎?

Comment by j9ermugugr1e1, Aug 16, 2009

關於切換螢幕 提到 "在 Windows 作業系統上按下 「Ctrl」和「F12」鍵" 如果能註明是 左ctrl鍵 或許會更好

(我試了很久的右ctrl鍵都沒反應...XD)

Comment by GregChuLove, Sep 20, 2009

你好 網頁連結 http://www.mymobisoft.com/bbs/viewtopic.php?f=2&t=114 好像壞了。

我找不到data/app/ 目錄耶,好奇怪。

Comment by gasolin, Sep 20, 2009

要有 root 權限, 例如先下 su 命令

Comment by Tim19870825, Oct 09, 2009

我要執行 emulator -avd wawa 都跑不出模擬器 他會出現 emulator: ERROR: bad config: virtual device director emulator: could not find virtual device named 'wawa' 請問是甚麼原因?

Comment by gasolin, Oct 09, 2009

我寫的文件裡應該沒教過這樣用吧? 新版要跑模擬器似乎得下比較多參數, 請參考 --help

Comment by yk771114, Oct 10, 2009

抱歉,移除程式部分 adb devices 顯示有連結 可是adb shell還是有錯誤 另外android create avd --target 2 --name devphone –skin G1 這邊少了一個- 應為android create avd --target 2 --name devphone --skin G1 想問一下如何調整顯示出來的模擬器大小?謝謝

Comment by Tim19870825, Oct 10, 2009

我點Run或著Debug時,都會跳出這段錯誤訊息"An instrumention test runner is not specified!" 然後模擬器也跑不出來,請問是甚麼原因?

Comment by u8805001yy, Oct 13, 2009

我已經創造了模擬器 但卻叫不出來 錯誤訊息為 emulator:ERROR: bad config: virtual device directory lacks config.ini emulator: could not find virtual device named 'cupcake' 但我執行android list avd的確有出現Available Android Virtual Devices有我命名的cupcake的AVD 請問我可能哪執行錯了?

Comment by miao930, Nov 11, 2009

請問在創建虛擬機器時所下的指令 $ android create avd --target 1 --name eclair 為什麼此指令創出來的虛擬機器為"Android SDK 2.0 虛擬機器"??

我創出來的是 Android 1.1 is a basic Android platform 還有一個問題就是 之後創建出來的資訊 顯示 Created AVD 'cupcake' based on Android 2.0 但是你創的名字不是叫做 "eclair"?

Comment by gasolin, Nov 11, 2009

內文修正了,SDK Tools r3 版之後 也已經提供 GUI 版的「AVD and SDK Manager」設定工具,就比較不容易搞混了

Comment by harrison.yuan, Nov 28, 2009

在"android list target"之後,可以看到"id: 4" 才是 "android-5" (Android SDK 2.0) 所以改用 "android create avd --target 4 --name eclair" 即可

Comment by hyde666.addict, Dec 02, 2009

debug出現這個錯誤訊息emulator: could not find virtual device named 'eclair' 可是我在執行android list avd 明明就有看到我建的虛擬機器@@


Sign in to add a comment
Hosted by Google Code