轉http://www.eoeandroid.com/thread-23281-1-1.html html
Android模擬器ndroid SDK自帶一個移動設備模擬器 — 它是一個能夠運行在你電腦上的虛擬設備. Android模 擬器可讓你不需使用物理設備便可預覽、開發和測試Android應用程序.
Android模擬器可以模擬除了接聽和撥打電話外的全部移動設備上的典型功能和行爲. 如右圖所示, Android模擬器提供了大量的導航和控制鍵,你能夠經過鼠標或鍵盤點擊這些按鍵來爲你的應用程序產生 事件. 同時它還有一個屏幕用於顯示Android自帶應用程序和你本身的應用程序.
爲了便於模擬和測試應用程序, Android模擬器容許你你的應用程序經過Android平臺服務調用其餘程 序、訪問網絡、播放音頻和視頻、保存和**數據、通知用戶、渲染圖像過渡和場景.
Android模擬器一樣具備強大的調試能力,例如可以記錄內核輸出的控制檯、模擬程序中斷(好比接受 短信或打入電話)、模擬數據通道中的延時效果和遺失。
下面的章節將提供關於模擬器的詳細信息,以及如何在開發應用程序中使用模擬器。
啓動和關閉模擬器
要啓動Android模擬器,首先進入SDK的tools/文件夾,而後輸入 emulator 或 ./emulator。這個操做將初始化Android系統,你將會在屏幕 上看到模擬器窗口。
要關閉模擬器,只須要關閉模擬器窗口便可。
操做模擬器
你能夠經過模擬器的啓動選項和控制檯命令來控制模擬環境的行爲和特性。一旦模擬器啓動,你就能夠經過鍵盤和鼠標來」按」 模擬器的按鍵,從而操做模擬器。
下面的表格總結了模擬器按鍵可鍵盤按鍵之間的映射關係。 android
模擬器按鍵 | 鍵盤按鍵 |
後退 | ESC |
菜單 | F1 或 PgUp |
開始 | F2 或 PgDn |
呼叫 | F3 |
掛斷 | F4 |
— | F5, F6 未分配 |
電源按鍵 | F7 |
禁用/啓用全部網絡 | F8 |
開始跟蹤 | F9 (當且僅當有-trace標記時有效) |
中止跟蹤 | F10 (當且僅當有-trace標記時有效) |
主頁 | HOME |
方向鍵 左/上/右/下 | 小鍵盤 4/8/6/2 |
方向鍵 中心建 | 小鍵盤 5 |
調低音量 | 小鍵盤 負號(-) |
調高音量 | 小鍵盤 加號(+) |
模擬器啓動選項
Android模擬器提供了不少啓動選項,你能夠在啓動模擬器時指定,來控制其外觀和行爲。下面是用命 令行的方式啓動模擬器並指定參數的語法: 網絡
下表總結了全部有效的選項。
tcp
類型 | 選項 | 描述 | 註釋 |
幫助 | -help | 以列表的形式打印模擬器的全部命令 | |
數據 | -data [file] | 使用<file>看成用戶數據的磁盤鏡像 | 若是沒有-data,模擬器會在~/.android (Linux/Mac) 或C:\Documents and Settings\<user>\Local Settings\Android (Windows)中查找文件名爲」userdata.img」的文件。 若是使用了-data <file>但<file>不存在,模擬器會在那個位置建立一個文件 |
-ramdisk <file> | 使用<file>做爲RAM鏡像 | 默認值爲<system>/ramdisk.img | |
-sdcard <file> | 使用<file> 做爲SD卡鏡像 | 默認值爲<system>/sdcard.img | |
-wipe-data | 啓動前清除用戶磁盤鏡像中的全部數據(參考-data) | ||
調試 | -console | 容許當前中斷使用控制檯Shell | |
-debug-kernel | 將內核輸出發送到控制檯 | ||
-logcat <logtags> | 容許根據給定的標籤爲輸出分類 | 若是定義了環境變量ANDROID_LOG_TAGS而且不爲空, 它的值將被做爲logcat的默認值。 |
|
-trace <name> | 容許代碼剖析(按F9鍵開始) | ||
-verbose | 容許詳細信息輸出 | ||
-verbosekeys | 容許詳細輸出按鍵信息 | ||
媒體 | -mic <device or file> | 使用設備或者WAV文件做爲音頻輸出 | |
-noaudio | 禁用Android的音頻支持 | 默認禁用 | |
-radio <device> | 將無線調制解調器接口重定向到主機特徵設備 | ||
-useaudio | 啓用Android音頻支持 | 默認不啓用 | |
網絡 | -netdelay <delay> | 設置網絡延遲模擬的延遲時間爲<delay>. | 默認值是none。請參考[url=http:/#.E7.BD.91.E9.80.9F.E6.A8.A1.E6.8B.9F]網絡延遲模擬[/url]中表」支持的<delay>值」 |
-netfast | -netspeed full -netdelay none的快捷方式 | ||
-netspeed <speed> | 設置網速模擬的加速值爲<speed>. | 默認值爲full。請參考[url=http:/#.E7.BD.91.E9.80.9F.E6.A8.A1.E6.8B.9F]網速模擬[/url]中表」支持的<speed>值」 | |
系統 | -image <file> | 使用<file>做爲系統鏡像 | 默認值爲<system>/system.img |
-kernel <file> | 使用<file> 做爲模擬器內核 | ||
-nojni | |||
-qemu | 傳遞qemu參數 | ||
-qemu -h | 顯示qemu幫助信息 | ||
-system <dir> | 在<dir>目錄下查找系統、RAM和用戶數據鏡像 | ||
UI | -flashkeys | 在設備皮膚上閃爍按下的鍵 | |
-noskin | 不使用任何模擬器皮膚 | ||
-onion <image> | 在屏幕上使用覆蓋圖 | 不支持JPEG格式圖片,僅支持PNG格式圖片 | |
-onion-alpha <percent> | 指定onion皮膚的半透明值(單位%). | 默認值爲50 | |
-skin <skinID> | 用指定皮膚啓動模擬器 | SDK提供了4個可選皮膚: QVGA-L (320×240, 風景) (默認)QVGA-P (240×320, 肖像)HVGA-L (480×320, 風景)HVGA-P (320×480, 肖像) |
|
-skindir <dir> | 在<dir>目錄下查找皮膚 |
使用模擬器控制檯
每個運行中的模擬器實例都包括一個控制檯,你能夠利用控制檯動態的查詢和控制模擬設備的環境 。例如,你能夠利用控制檯動態的管理端口映射和網絡特性,還能夠模擬電話時間。要想進入控制檯輸入 命令,你須要使用telnet鏈接到控制檯的端口號。
你可使用下面的命令隨時隨地鏈接到任何一個運行中的模擬器實例: 工具
假設第一個模擬器實例的控制檯使用5554端口,下一個實例使用的端口號會加2,好比555六、5558…… 等。你能夠在啓動模擬器是使用-verbose選項來檢測該模擬器實例使用的端口號,在調試 輸出的找到以」emulator console running on port number「這一行。 另外, 你可 以在命令行中使用adb devices來查看模擬器實例和他們的端口列表。最多能夠有16個模擬 器實例同時運行控制檯。
注意:模擬器**端口5554-5587的來自任何電腦的鏈接。未來發布的版本將只接受本 機的鏈接,但目前,你須要用防火牆阻斷外部對你開發設備的5554-5587這些端口的鏈接。
一旦鏈接上控制檯, 你能夠輸入help [command]來查看命令列表和指定命令的教程。
要離開控制檯會話, 使用quit 或 exit 命令。
下面的章節將介紹控制檯的主要功能區域。
端口重定向
你能夠在模擬器運行期間添加和刪除端口重定向。鏈接上控制檯後,你能夠經過下面的方法管理端口 重定向: 測試
支持下表列出的子命令:
ui
子命令 | 描述 | 註釋 |
list | 列出當前的端口重定向 | (min 150, max 550) |
add <protocol>:<host-port>:<guest-port> | 添加新的端口重定向 | <protocol> 必須是」tcp」 或 「udp」<host-port> 是主機上開啓的端口號<guest-port> 是向模擬器/設備發送數據的端口號 |
del <protocol>:<host-port> | 刪除端口重定向 | <protocol> and <host-port>的含義同上 |
網絡情況
你能夠利用控制檯檢測網絡情況和當前延遲、加速特性。要想檢測網絡狀態須要鏈接到控制檯,使用 netstatus 命令。下面是命令和輸出的例子。 url
網絡延遲模擬
模擬器容許你模擬多種網絡延遲等級, 所以你能夠在更接近真實狀況的環境下測試你的應用程序。你 能夠在模擬器啓動時設置延遲等級或範圍,也能夠在模擬器運行期間經過控制檯動態修改延遲。
要想在模擬啓動時設置延遲,使用-netdelay選項,後面跟一個合法的 <delay>值。這裏給出一些例子: spa
要想在模擬器運行期間動態修改網絡延遲,須要鏈接上控制檯使用netdelay命令,後面 跟合法的 <delay>值。下表中列出了合法的<delay>值 操作系統
值的格式爲下面的一種(單位爲毫秒):
值 | 描述 | 註釋 |
gprs | GPRS | (min 150, max 550) |
edge | EDGE/EGPRS | (min 80, max 400) |
umts | UMTS/3G | (min 35, max 200) |
none | 沒有延遲 | (min 0, max 0) |
<num> | 模擬一個準確的延遲(毫秒) | |
<min>:<max> | 模擬一個指定的延遲範圍(min, max 毫秒) |
網速模擬
模擬器一樣容許你模擬多種網絡傳輸速度。你能夠在模擬器啓動時指定傳輸速度或範圍,也能夠在模 擬器啓動後經過控制檯動態修改傳輸速度。
要想在模擬器啓動時設置網絡傳輸速度,使用-netspeed選項,後面跟合法的 <speed>值。下面是一些例子:
要想在模擬器運行中動態改變網絡傳輸速度,須要鏈接上控制檯使用netspeed命令,後 面跟合法的<speed>值。下表中列出了合法的<speed>值
<speed>值的格式爲下面的一種(單位爲kb/s):
值 | 描述 | 註釋 | |
gsm | GSM/CSD | (Up: 14.4, down: 14.4) | |
hscsd | HSCSD | (Up: 14.4, down: 43.2) | |
gprs | GPRS | (Up: 40.0, down: 80.0) | |
edge | EDGE/EGPRS | (Up: 118.4, down: 236.8) | |
umts | UMTS/3G | (Up: 128.0, down: 1920.0) | |
hsdpa | HSDPA | (Up: 348.0, down: 14400.0) | |
full | 無限制 | (Up: 0.0, down: 0.0) | |
<num> | 設置一個上行和下行公用的準確速度 | ||
<up>:<down> | 分別爲上行和下行設置準確的速度 |
電話功能模擬
Android模擬器擁有本身的GSM模塊容許你在模擬器上模擬電話功能。例如,你能夠模擬打入電話和建 立/終止數據鏈接。Android系統模擬電話呼叫跟真實狀況同樣。這個版本暫不支持電話錄音。
你能夠經過控制檯訪問模擬器的電話功能。鏈接上控制檯後,你可使用
來調用電話功能。
gsm命令支持下表列出的子命令。
子命令 | 描述 | 註釋 |
call <phonenumber> | 模擬來自電話號碼爲<phonenumber>的呼叫 | |
voice <state> | 修改GPRS語音鏈接的狀態爲<state> | 合法的<state>值爲: unregistered — 無可用網絡home — 處於本地網,無漫遊roaming — 處於漫遊網searching — 查找網絡denied — 僅能用緊急呼叫off — 同’unregistered’on — 同’home’ |
data <state> | 修改GPRS數據鏈接的狀態爲<state>. | 合法的<state>值爲: unregistered — 無可用網絡home — 處於本地網,無漫遊roaming — 處於漫遊網searching — 查找網絡denied — 僅能用緊急呼叫off — 同’unregistered’on — 同’home’ |
使用模擬器皮膚
你可讓模擬器使用下表介紹的4種皮膚之一。要想指定皮膚,在啓動模擬器是使用-skin <skinID>選項。
例如:
注意:<skinID> 必須用大寫(若是你的開發設備大小敏感)。
皮膚ID | 描述 | |
QVGA-L | 320×240, 橫屏 (默認) | |
QVGA-P | 240×320, 豎屏 | |
HVGA-L | 480×320, 橫屏 | |
HVGA-P | 320×480, 豎屏 |
運行多個模擬器實例
若是必要的話,你能夠同時運行多個模擬器實例。每一個模擬器實例使用獨立的用戶數據內存和不一樣的 控制檯端口。這令你能夠獨立的管理每個模擬器實例。
然而,若是你要運行多個模擬器實例,請注意每一個實例存儲跨會話的持久用戶數據的能力—用戶 設置和安裝的應用程序—會受限制。具體以下:
在模擬器上安裝應用程序
要想在模擬器上安裝應用程序安裝,要用到adb工具。
注意:模擬器經過重啓保存用戶設置和安裝的程序。默認狀況下,模擬器將數據保存在開發設備的一 個文件裏。在Linux和Mac操做系統下,模擬器將用戶數據報訊在~/.android/userdata.img 。在Windows下,模擬器將數據保存在C:\Documents and Settings\<user>\Local Settings\Android\userdata.img。模擬器用userdata.img文件的內容做爲data/的 目錄。
SD卡模擬
你能夠建立磁盤鏡像並在模擬器啓動時加載它,來模擬設備中用戶的SD卡。下面的章節將介紹如何創 建磁盤鏡像、如何向磁盤鏡像像拷貝文件和如何在模擬器啓動時加載鏡。
注意:只能在模擬器啓動是加載磁盤鏡像。同理,模擬器運行時不能移除SD卡。然而,你能夠經過adb 或模擬器瀏覽、發送、拷貝和刪除模擬SD卡上的文件。
同時還要注意,模擬SD卡的大小不能超過2GB。
建立磁盤鏡像
你能夠用SDK中的mksdcard工具來建立能夠在模擬器啓動時加載的FAT32磁盤鏡像。你能夠在SDK的 tools/目錄下找到mksdcard,用下面的命令船檢磁盤鏡像:
拷貝文件到磁盤鏡像
一旦你建立了一個磁盤鏡像,你就能夠在模擬器加載它以前拷貝文件到鏡像中。要拷貝文件,你能夠 將鏡像加載爲循環設備而後向裏面拷貝文件,或者你可使用mtools工具包中的mcopy直接將文件拷貝到 鏡像中。mtools包在Linux、Mac和Windows下都可用。
在模擬器啓動時加載磁盤鏡像
要想在模擬器中加載FAT32格式的磁盤,啓動模擬器時帶上-sdcard標記並指定鏡像的名 稱和路徑(相對於當前工做目錄):
故障排除
adb工具把模擬器當成是一個真實的物理設備。所以,你須要在使用adb命令–例如 install–時加上-d標記。-d 標記容許你在衆多鏈接設備中指定使用哪個設備做爲命令 的目標。若是不指定-d,模擬器會選擇列表中的第一個設備。向瞭解更多關於adb的信息,請參考 Android Debug Bridge。
對於運行在Mac OS X上的模擬器,若是你在啓動模擬器時遇到」Warning: No DNS servers found」錯誤,請查/etc/resolv.conf文件是否存在。若是不存在,請在命令窗口中運行下面的命令 :
模擬器的限制
這一版的模擬器存在以下限制: