Android模擬器emulator基本使用技巧和命令
https://www.cnblogs.com/liongis/archive/2010/09/16/1828289.html
Android模擬器ndroid SDK自帶一個移動設備模擬器 — 它是一個可以運行在你電腦上的虛擬設備. Android模 擬器可以讓你不需使用物理設備即可預覽、開發和測試Android應用程序.
Android模擬器能夠模擬除了接聽和撥打電話外的所有移動設備上的典型功能和行為. 如右圖所示, Android模擬器提供了大量的導航和控制鍵,你可以通過鼠標或鍵盤點擊這些按鍵來為你的應用程序產生 事件. 同時它還有一個屏幕用於顯示Android自帶應用程序和你自己的應用程序.
為了便於模擬和測試應用程序, Android模擬器允許你你的應用程序通過Android平台服務調用其他程 序、訪問網絡、播放音頻和視頻、保存和**數據、通知用戶、渲染圖像過渡和場景.
Android模擬器同樣具有強大的調試能力,例如能夠記錄內核輸出的控制台、模擬程序中斷(比如接受 短信或打入電話)、模擬數據通道中的延時效果和遺失。
下面的章節將提供關於模擬器的詳細信息,以及如何在開發應用程序中使用模擬器。
啟動和關閉模擬器
要啟動Android模擬器,首先進入SDK的tools/文件夾,然后輸入 emulator 或 ./emulator。這個操作將初始化Android系統,你將會在屏幕 上看到模擬器窗口。
要關閉模擬器,只需要關閉模擬器窗口即可。
操作模擬器
你可以通過模擬器的啟動選項和控制台命令來控制模擬環境的行為和特性。一旦模擬器啟動,你就可以通過鍵盤和鼠標來”按” 模擬器的按鍵,從而操作模擬器。
下面的表格總結了模擬器按鍵可鍵盤按鍵之間的映射關系。
模擬器按鍵 | 鍵盤按鍵 |
后退 | ESC |
菜單 | F1 或 PgUp |
開始 | F2 或 PgDn |
呼叫 | F3 |
掛斷 | F4 |
— | F5, F6 未分配 |
電源按鍵 | F7 |
禁用/啟用所有網絡 | F8 |
開始跟蹤 | F9 (當且僅當有-trace標記時有效) |
停止跟蹤 | F10 (當且僅當有-trace標記時有效) |
主頁 | HOME |
方向鍵 左/上/右/下 | 小鍵盤 4/8/6/2 |
方向鍵 中心建 | 小鍵盤 5 |
調低音量 | 小鍵盤 負號(-) |
調高音量 | 小鍵盤 加號(+) |
模擬器啟動選項
Android模擬器提供了很多啟動選項,你可以在啟動模擬器時指定,來控制其外觀和行為。下面是用命 令行的方式啟動模擬器並指定參數的語法:
- emulator [-option [value]] ... [-qemu args]
下表總結了所有有效的選項。
類型 | 選項 | 描述 | 注釋 |
幫助 | -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連接到控制台的端口號。
你可以使用下面的命令隨時隨地連接到任何一個運行中的模擬器實例:
- telnet localhost <port>
假設第一個模擬器實例的控制台使用5554端口,下一個實例使用的端口號會加2,比如5556、5558…… 等。你可以在啟動模擬器是使用-verbose選項來檢測該模擬器實例使用的端口號,在調試 輸出的找到以”emulator console running on port number“這一行。 另外, 你可 以在命令行中使用adb devices來查看模擬器實例和他們的端口列表。最多可以有16個模擬 器實例同時運行控制台。
注意:模擬器**端口5554-5587的來自任何電腦的連接。將來發布的版本將只接受本 機的連接,但目前,你需要用防火牆阻斷外部對你開發設備的5554-5587這些端口的連接。
一旦連接上控制台, 你可以輸入help [command]來查看命令列表和指定命令的教程。
要離開控制台會話, 使用quit 或 exit 命令。
下面的章節將介紹控制台的主要功能區域。
端口重定向
你可以在模擬器運行期間添加和刪除端口重定向。連接上控制台后,你可以通過下面的方法管理端口 重定向:
- redir <list|add|del>redir
支持下表列出的子命令:
子命令 | 描述 | 注釋 |
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 命令。下面是命令和輸出的例子。
- network status
網絡延遲模擬
模擬器允許你模擬多種網絡延遲等級, 因此你可以在更接近真實情況的環境下測試你的應用程序。你 可以在模擬器啟動時設置延遲等級或范圍,也可以在模擬器運行期間通過控制台動態修改延遲。
要想在模擬啟動時設置延遲,使用-netdelay選項,后面跟一個合法的 <delay>值。這里給出一些例子:
- emulator -netdelay gprs
- emulator -netdelay 40 100
要想在模擬器運行期間動態修改網絡延遲,需要連接上控制台使用netdelay命令,后面 跟合法的 <delay>值。下表中列出了合法的<delay>值
- network delay gprs<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>值。下面是一些例子:
- emulator -netspeed gsm
- emulator -netspeed 14.4 80
要想在模擬器運行中動態改變網絡傳輸速度,需要連接上控制台使用netspeed命令,后 面跟合法的<speed>值。下表中列出了合法的<speed>值
- network speed 14.4 80
<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|data|voice>
來調用電話功能。
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>選項。
例如:
- emulator -skin HVGA-L
注意:<skinID> 必須用大寫(如果你的開發設備大小敏感)。
皮膚ID | 描述 | |
QVGA-L | 320×240, 橫屏 (默認) | |
QVGA-P | 240×320, 豎屏 | |
HVGA-L | 480×320, 橫屏 | |
HVGA-P | 320×480, 豎屏 |
運行多個模擬器實例
如果必要的話,你可以同時運行多個模擬器實例。每個模擬器實例使用獨立的用戶數據內存和不同的 控制台端口。這令你可以獨立的管理每一個模擬器實例。
然而,如果你要運行多個模擬器實例,請注意每個實例存儲跨會話的持久用戶數據的能力—用戶 設置和安裝的應用程序—會受限制。具體如下:
- 只有第一個模擬器實例能根據會話保存用戶數據。默認情況下它把用戶數據保存在開發設備 的~/.android/userdata.img (on Linux and Mac) 或 C:\Documents and Settings\<user>\Local Settings\Android\userdata.img (on Windows)文件里。你可以 在啟動模擬器時使用-data選項來控制用戶數據的存儲(和加載)位置(請參考啟動選項)。
- 在第一個實例后啟動的模擬器實例(並行的)在會話過程中也保存用戶數據;但它們but they 不 為下一個會話保存它。這些實例將數據保存在臨時文件中,當實例退出時,相應的臨時文件會被刪 除。
在模擬器上安裝應用程序
要想在模擬器上安裝應用程序安裝,要用到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,用下面的命令船檢磁盤鏡像:
- mksdcard <size> <file>
- 例句:
- mksdcard 512M SD.IMG //這樣就會在tools目錄下生成一個512M的sd.img文件
- 啟動一個帶有SD卡的模擬器:
- emulator -avd g2 -sdcard sd.img //g2是先前設置好的AVD名稱
拷貝文件到磁盤鏡像
一旦你創建了一個磁盤鏡像,你就可以在模擬器加載它之前拷貝文件到鏡像中。要拷貝文件,你可以 將鏡像加載為循環設備然后向里面拷貝文件,或者你可以使用mtools工具包中的mcopy直接將文件拷貝到 鏡像中。mtools包在Linux、Mac和Windows下均可用。
在模擬器啟動時加載磁盤鏡像
要想在模擬器中加載FAT32格式的磁盤,啟動模擬器時帶上-sdcard標記並指定鏡像的名 稱和路徑(相對於當前工作目錄):
- emulator -sdcard <filepath>
故障排除
adb工具把模擬器當成是一個真實的物理設備。因此,你需要在使用adb命令–例如 install–時加上-d標記。-d 標記允許你在眾多連接設備中指定使用哪一個設備作為命令 的目標。如果不指定-d,模擬器會選擇列表中的第一個設備。向了解更多關於adb的信息,請參考 Android Debug Bridge。
對於運行在Mac OS X上的模擬器,如果你在啟動模擬器時遇到”Warning: No DNS servers found”錯誤,請查/etc/resolv.conf文件是否存在。如果不存在,請在命令窗口中運行下面的命令 :
- ln -s /private/var/run/resolv.conf /etc/resolv.conf
模擬器的限制
這一版的模擬器存在如下限制:
- 不支持呼叫和接聽實際來電;但可以通過控制台模擬電話呼叫(呼入和呼出)
- 不支持USB連接
- 不支持相機/視頻捕捉
- 不支持音頻輸入(捕捉);但支持輸出(重放)
- 不支持擴展耳機
- 不能確定連接狀態
- 不能確定電池電量水平和交流充電狀態
- 不能確定SD卡的插入/彈出
- 不支持藍牙
================== End