【Android-Emulator】Android模擬器介紹和基本使用

注:其中部分內容參考網上資源

 

1 Android 模擬器介紹

Android 中提供了一個模擬器來模擬 ARM 核的移動設備。 Android 的模擬器 是基於 QEMU 開發的, QEMU 是一個有名的開源虛擬機項目(詳見 http://bellard.org/qemu/ ),它可以提供一個虛擬的 ARM 移動設備。 Android 模擬器被命名爲 goldfish ,用來 模擬包括下面一些功能的 ARM SoC:

* ARM926ej-S CPU

* Thumb support

* MMC

* RTC

* Keyboard

* USB Gadget

* Framebuffer

* TTY driver

* NAND FLASH

Android 模擬器所對應的源代碼主要在 external/qemu 目錄下。如果你想將 Android 移植到其 他設備上,熟悉它目前所針對的模擬器環境可以提供一些參考。

對於應用程序的開發者,模擬器 提供了很多開發和測試時的便利。無論在 Windows 下還是 Linux 下, Android 模擬器都可以順利運行,並且 Google 提供了 Eclipse 插件,可將模擬器集成到 Eclipse IDE 環境。當然,你也可以從命令行啓動 Android 模擬器。

這款模擬器功能非常齊全,電話 本、通話等功能都可正常使用(當然你沒辦法真的從這裏打電話)。甚至其內置的瀏覽器和 Google Maps 都可以聯網。用戶可以使用鍵盤輸入,鼠標點擊模擬器按鍵輸入,甚至還可以使用鼠標點擊、拖動屏幕進 行操縱。

當然模擬器畢竟是模擬器,和真 實的機子還是存在差別的,

android 模擬器和真機的不同之處:

* 不支持呼叫和接聽實際來電;但可以通過控制檯模擬電話呼叫 ( 呼入和呼出 )
    *
不支持 USB 連接

* 不支持相機 / 視頻捕捉

* 不支持音頻輸入 ( 捕捉 ) ;但支持輸出 ( 重放 )

* 不支持擴展耳機

* 不能確定連接狀態

* 不能確定電池電量水平和交流充電狀態

* 不能確定 SD 卡的插入 / 彈出

* 不支持藍牙

2 、創建和啓動 Android 模擬器

要玩 GPhone 的模擬器,當然需要先去 http://developer.android.com/sdk ( 如果打不開就用 http://androidappdocs.appspot.com/sdk/index.html ) 上面下載 Android SDK ,解壓出來後在 SDK 的根目錄下有一個 tools 文件夾,裏面就是模擬器和一些非常有用的工具。( SDK 詳細的安裝過程請參照 http://blog.csdn.net/magicyu2/archive/2009/11/02/4755747.aspx

要正確的啓動模擬,你必須先要 創建一個 AVD( Android Virtual Device 虛擬設備 ) ,你可以利用 AVD 創建基於不同版本 的模擬器,下面就介紹如何創建 AVD

(1)        查看當前支持版本 ( 在列出的版本中我們需要記住 id 值,這個值在第 2 步中使用 )

magicyu@magicyu-desktop:~$ android list target

你可以看到幾個 Available Android targets ,比如: Name: Android 1.6 ,他們有各自的 id 號。

(2)        創建 AVD

magicyu@magicyu-desktop:~$ android create avd -n magicyu -t 2

-n 後面接需要創建 avd 的名字, -t 後面接需要創建虛擬器的類型, 2 即爲步驟( 1 )中得到的類型 id 號。

(3)        查看是否創建成功 ( 如果成功會顯示剛纔我們創建的 avd 信息 )

magicyu@magicyu-desktop:~$ android list avd

(4)        啓動模擬器:

magicyu@magicyu-desktop:~$ emulator @magicyu 或 者

emulator -avd magicyu

其中 @ -avd 後接的是你創建過的 avd 名字

(5)        選擇啓動的皮膚

magicyu@magicyu-desktop:~$ emulator -avd magicyu -skin QVGA

skin 後面接所要 啓動皮膚的類型,所有的類型可以在 <SDK>/ platforms/android-1.*/skins 目錄下找到, * 爲所指的版本。如在 1.6 版本的 SDK 下有 HVGA QVGA   WVGA800 WVGA854 幾種。按 Ctrl+F11 ,可以直接改變模擬器的橫縱擺放。

      

當然 AVD 也可以在 Eclipse 中創建和啓動。關於 Eclipse+ADT+SDK 的安裝請參見 http://blog.csdn.net/magicyu2/archive/2009/11/02/4755747.aspx

運行 Eclipse Window->Android SDK and AVD Manager ,就能得到如下的界面,選擇新建即可新建一 個 AVD

 

 eclipse_create_avd

3 Android 模擬器的一些工具

1 adb:

ADB(Android Debug Bridge) Android 提供的一個通用的調試工具,藉助這個工具,我們可以管理設備或手機模擬器的狀態還可以進行以下的操 作:

a 、快速更新設備或 手機模擬器中的代碼,如應用或 Android 系統升級;

b 、在設備上運行 shell 命令;

c 、管理設備或手機 模擬器上的預定端口;

d 、在設備或手機模 擬器上覆制或粘貼文件

一些常用的操作:

進入 Shell: adb shell

通過上面的命令,就可以進入設 備或模擬器的 shell 環境中,在這個 Linux Shell 中,你可以執行各種 Linux 的命令,另外如果只想執行一條 shell 命令,可以採用以下的方式:

adb shell [command]

如: adb shell dmesg 會打印出內核的調試信息。

(Android linux shell 做了大量精簡,很多 linux 常用指令都不支持 )

上傳文件 : adb push <PC 文件 > </tmp/...>

下載文件 : adb pull </tmp/...> <PC 文件 >

安裝程序 : adb install <*.apk>

卸載軟件 : adb shell rm /data/app/<*.apk>

補充一點,通過 adb 安裝的軟件 (*.apk) 都在 "/data/app/" 目錄下,所以安裝時不必制定路徑,卸載只需要簡單的執行 "rm" 就行。

結束 adb: adb kill-server

顯示 android 模擬器狀態 :

adb devices ( 端口信息 )

adb get-product ( 設備型號 )

adb get-serialno ( 序列號 )

等待正在運行的設備 : adb wait-for-device

端口轉發 : adb forward adb forward tcp:5555 tcp:1234

( 將默認端口 TCP 5555 轉發到 1234 端口上 )

查看 bug 報告 : adb bugreport

adb shell sqlite3 訪問數據庫 SQLite3

adb shell logcat -b radio 記錄無線通訊日誌: 一般來說,無線通訊的日誌非常多,在運行時 沒必要去記錄,但我們還是可以通過命令,設置記錄

 

應用程序配置文件 :

"AndroidManifest.xml"

"<category android:name="android.intent.category.LAUNCHER" />"

決定是否應用程序是否顯示在 Panel

 

2 am 指令 ( shell 內使用 am 來加載 android 應用 ):

am [start|instrument]   

 

am start [-a <ACTION>]

  [-d <DATA_URI>]

  [-t <MIME_TYPE>]    

  [-c <CATEGORY> [-c <CATEGORY>] ...] 

  [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]

  [-n <COMPONENT>] [-D] [<URI>]       

am instrument [-e <ARG_NAME> <ARG_VALUE>]

  [-p <PROF_FILE>]          

  [-w] <COMPONENT>

啓動瀏覽器 :

am start -a android.intent.action.VIEW -d http://www.google.cn/

撥打電話 :

am start -a android.intent.action.CALL -d tel:10086

啓動 google map 直接定位到北京 :

am start -a android.intent.action.VIEW geo:0,0?q=beijing

 

3 )爲模擬器加上 SD 卡:

emulator -sdcard <path>/sdcard.img

下面我們再來說說如何創建 "sdcard.img" 文件:

“tools” 目錄 下還有另外一個很好用的工具 mksdcard ,一看名字就知 道 ——make sdcard 。對,就用它來創建一個 “SD

命令爲:

mksdcard 1024M D:/sdcard.img

OK, 這樣一個容量 爲 1G SD 卡就創建完畢了。

使用 SDCard:

創建 : mksdcard <1024M> <sdcard.img>
(bytes(default)
K M)

連接到模擬器 : emulator -sdcard <path/sdcard.img>

傳文件到 SDCard: adb push < 目錄 /audio.mp3> </sdcard/audio.mp3>

 

4 Android 模擬器打電話發短信

GPhone 的模擬 器有個特有的號碼: 15555218135 ,這個就類似我們 實體手機的 SIM 卡號碼啦。要實現撥號,用手機?當 然不行!

更簡單,三步:

1. 打開終端

2. 連接 : telnet localhost 5554 5554 是你打開模擬器後上面顯示的數字)

3. 命令 :gsm call 15555218135

look !是不是模 擬器上顯示來電了?接聽 / 掛斷和實體手機一樣。

發短信也一樣簡單,重複上面 1 2 兩步,第三部命令改一下:

sms send 15555218135 Hello,this is a Message.

 

4 Android 模擬器主要命令參數介紹

emulator [-<option> [<value>]] ... [-<qemu args>]
下面的 表總結了可用的參數

Help

-help 打印模擬 器參數列表。

-help-all 打 印所有啓動參數明細。

-help-<option> 打印指定啓動參數的信息。

-help-debug-tags 打印所有被 -debug <tags> 打開的列表。

-help-disk-images 打印正在使用的磁盤鏡像信息。

-help-environment 打印模擬器環境變量信息。  

-help-keys 打 印當前的鍵盤映射。

-help-keyset-file 打印一個自定義的鍵盤映射文件的定義。

 

Disk Images

-cache <filepath> 使用 <filepath> 指定網絡緩存分區鏡像。

自定義,您可以指定一個當前工作 目錄的相對路徑。如果沒有指定緩存文件,模擬器會指定一個零時文件作爲緩存文件。更多信息請參考 -help-disk-images.

-data <filepath> 使用 <filepath> 作爲用戶數據磁盤鏡像。

自定義,您可以指定一個當前工作 目錄的相對路徑。如果 -data 沒有被使用,模擬器會在 <datadir> 指定的目錄下尋找名叫 "userdata-qemu.img" 的鏡像文件。默認情況下,模擬器會尋找 ~/.android (on Linux/Mac) 或者 C:/Documents and Settings/<user>/Local Settings/Application Data/Android (on Windows)

如果您使用了 -data <filepath> ,但是文件並不存在,模 擬器將創建同名文件。

更多信息請參見運行多個模擬器實 例和 -help-disk-images

-image <filepath> 使用 <filepath> 作爲系統鏡像。

自定義,您可以指定一個當前工作 目錄的相對路徑。默認爲 <system>/system.img
-initdata <filepath>

重寫用戶數據鏡像時, ( 使用 -wipe-data) ,複製此文件內容到新用戶數據文件鏡像中。默認方式下,模擬器拷貝 <system>/userdata.img

自定義,您可以指定一個當前工作 目錄的相對路徑。參見 -wipe-data

更多信息請參見 -help-disk-images

-kernel <filepath> 使用 <filepath> 作爲模擬器內核。自定義,您可以指定一個當前工作目錄的相對路徑。

-nocache 啓 動模擬器時無緩存分區。參見 -cache <file>

-ramdisk <filepath> 使用 <filepath> 作爲虛擬內存鏡像。默認爲 <system>/ramdisk.img. 自定義,您可以指定一個當前工作目錄的相對路徑。更多信息請參見 -help-disk-images

-sdcard <filepath> 使用 <file> 作爲 SD 卡鏡像。默認爲 <system>/sdcard.img. 自定義,您可以指定一個當前工作目錄的相對路徑。更多信息請參見 -help-disk-images

-system <dirpath> 在指定的 <dir> 下搜索系統、虛擬內存和用戶數據鏡像文件。 <dir> 爲當前路徑的相對目錄。

-wipe-data 重 至用戶數據鏡像文件。 (that is, the file specified by -datadir and -data, or the default file). 模擬器刪除所有用戶數據, 然後複製右 -inidata 參數指定的數據到鏡像文 件,在啓動之前。參見 -initdata. 更多信息請參見 -help-disk-images

Debug

-debug <tags> 開啓 / 關閉指定 tag 的調試信息。

<tags> 是一個被空格 / 逗號 / 縱列所分割的調試組建名稱列表。更多信息參見 -help-debug-tags

-debug-<tag> 開啓 / 關閉指定 tag 的調試信息。使用 -help-debug-tags 獲得您可以指定爲 <tag> 的調試組件列表。

-debug-no-<tag> 關閉指定 tag 的調試信息。

-logcat <logtags> 打開指定 tag 的日誌輸出。如果環境變量 ANDROID_LOG_TAGS 被指定且不爲空,她的值將成爲日誌輸出的默認值。

-shell 創建一 個擁有 root 權限的命令行窗口。即使模擬器的 UI 界面無法使用了,您依然可以使用命令行窗口。按 Ctr-c 鍵中斷模擬器運行。

-shell-serial <device> 打開具有 root 權限的腳本窗口。 <device> 必須是一個 QEMU 類型的設備。參見 'serial -dev' http://www.bellard.org/qemu/qemu-doc.html#SEC10 上關於設備類型的列表信息。這兒有一些例子:

·         -shell-serial stdio is identical to -shell

·         -shell-serial tcp::4444,server,nowait 讓您的 shell 可以通過 4444 端口通訊。

·         -shell-serial fdpair:3:6 讓模擬器可以使用 3 (in) 6(out) 磁碟機。

·         -shell-serial fdpair:0:1 uses the normal stdin and stdout fds, except that QEMU won't tty-cook the data.

-show-kernel <name> 顯示內核信息。

-trace <name>Enable code profiling (press F9 to start), written to a specified file.

-verbose 開 啓冗長輸出。 Equivalent to -debug-init. 您可以定義 ANDROID_VERBOSE 環境變量作爲冗長輸出參數。定義你想用到的參數,用逗號分割。這樣可以省略像 -debug-<tags> 這樣的參數。下面是一個設置 ANDROID_VERBOSE 的例子,它帶有 -debug-init -debug-modem 參數:

ANDROID_VERBOSE=init,modem 更多信息參見 <-help-debug-tags>.

Media
-audio <backend>
使用指定的音頻後端。

-audio-in <backend> 使用指定的音頻輸入後端。

-audio-out <backend> 使用指定的音頻輸出後端。

-noaudio 在 當前虛擬機實例中關閉音頻支持。

-radio <device> 重新定向收音機接口到本地的字節設備。

-useaudio 打 開模擬器實例的音頻支持。默認爲打開。

Network

-dns-server <servers> 使用指定的 DNS 服務器。 <servers> 必須是以逗號分割,多於 4 個的服務器名或 IP 地址。

-http-proxy <proxy> 配置 TCP 連接使用 HTTP/HTTPS 代理。

<proxy> 必須符合以下格式: http://<server>:<port >

http://<username>:<password>@<server>:<port > 前綴 http:// 可以被忽略。如果 -http-proxy <proxy> 未被指定,模擬器將尋找 http_proxy 環境變量,並且自動尋找所有符號格式要求的 <proxy> 值。

-netdelay <delay> 設置網絡延遲默認值爲 none 。參見 Network Delay Emulation 中關於 <delay> 的值。

-netfast 快 捷的 -netspeed full -netdelay none

-netspeed <speed> 指定模擬器網絡速度爲 <speed>. 默認值爲 full 。參見表格 Network Speed Emulation 中的 <speed> 值。

-port <port> 指定模擬器網絡端口爲 <port>. 控制檯端口號必須介於 5554 5584 之間,並且 <port>+1 必須留作 ADB 使用。

-report-console <socket> 啓動前向第三方同志此模擬器實例的網絡端口。 <socket> 必須是以下幾種格式

tcp:<port>[,server][,max=<seconds>]

unix:<port>[,server][,max=<seconds>]

更多信息參見 -help-report-console
System

-cpu-delay <delay> 降低模擬器 CPU 的速度到 <delay> <delay> 支持 0 100 的整數。注意 <delay> 與具體的時鐘或其他的絕對頻率無關。它只表現爲一種抽象的,相對於當前模擬器運行狀況的速度調節。

-gps <device> 重定向 NMEA GPS 到字節設備。

使用此參數通知模擬器模擬一個 NMEA-compatible GPS ,連接到一個擴展的設備或 socket 端口。 <device> 格式必須符合 QEMU-specific 所指定的設備格式。更多信息參見 'serial -dev' http://www.bellard.org/qemu/qemu-doc.html#SEC10 .

-nojni Dalvik 運行時關閉 JNI 檢查

-qemu 傳遞參數 到 qemu

-qemu -h 關 閉 qemu 幫助。

-radio <device> 重定向錄音機模塊到制定的字符設備。 <device> 格式必須符合 QEMU 規定的序列設備。詳情參見 http://www.bellard.org/qemu/qemu-doc.html#SEC10 .

-timezone <timezone> 設定模擬器時區爲 <timezone> ,替換爲系統時區。 <timezone> 必須按照時區格式指定。比如: "America/Los_Angeles" "Europe/Paris"

-version 顯 示模擬器版本號。

UI

-dpi-device <dpi> 修改模擬器的分辨率適配物理設備。默認值爲 165 。參見 -scale.

-no-boot-anim 關閉模擬器啓動時的動畫。禁用啓動動畫可以加快啓動速度。

-no-window 關 閉模擬器的繪製窗口。

-scale <scale> 調整模擬器窗口。 <scale> 是介於 0.1 3 的數字,它是調整屏幕的比例因子。您也可以指定一個 DPI 值,在添加 dpi 前綴的情況下。 Auto 參數告訴模擬器選擇自己最合適的尺寸。

-raw-keys 關 閉 Unicode 鍵盤 reverse-mapping.

-noskin 不使 用任何模擬器皮膚。

-keyset <file> 用指定的鍵盤設置文件代替默認。指定宿主鍵盤和模擬器之間的鍵盤映射文件。更多信息參見 -help-keyset

-onion <image> 用圖片覆蓋屏幕。不支持 JPEG ,只支持 PNG

-onion-alpha <percent> 指定 onion 皮膚透明值(百分比) 默認爲 50.

-onion-rotation <position> 指定 onion 皮膚旋轉。 <position> 必須是 0, 1, 2, 3 中的一個。

-skin <skinID> 啓動模擬器,搭配指定皮膚。

-skindir <dir> 在指定目錄 <dir> 下搜索皮膚

發佈了137 篇原創文章 · 獲贊 6 · 訪問量 64萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章