模擬器和真機的比較html
android模擬器不具有的功能:
不支持呼叫和接聽實際來電;但能夠經過控制檯模擬電話呼叫(呼入和呼出)
不支持USB鏈接
不支持相機/視頻捕捉
不支持音頻輸入(捕捉);但支持輸出(重放)
不支持擴展耳機
不能肯定鏈接狀態
不能肯定電池電量水平和交流充電狀態
不能肯定SD卡的插入/彈出
不支持藍牙。linux
模擬器具有的獨特功能:
apidemo,這個API演示主要是ui部分,各類簡單的控件使用技巧在裏面均可以找到,
devtools,在devtools能夠獲取到一些debug時須要的信息。android
建立模擬器運行SDK目錄中的sdksetup.exe文件,點擊左側VirtualDevices選項卡,點擊New…sql
在新彈出的窗口裏填寫:
name:2.3.3 (給虛擬機起個名字)
Target:2.3.3 選擇版本
SDcard:100MB存儲卡內存多少兆
Skin:模擬器外觀和屏幕尺寸
Hardware:支持的硬件設備
Android模擬器的啓動速度很慢,大約須要2-3分鐘,等待的時候不要擔憂有什麼問題。下面是啓動成功的畫面。要注意的是用的模擬器不一樣,畫面風格也會不一樣。shell
模擬手機撥打電話和發送短信的功能數據庫
打電話和發短信須要至少2個模擬器。
注意模擬器標題上的數字「5554,5556,5558」就是這個模擬器的電話號碼。後端
下面咱們來研究下android模擬器命令api
正確的啓動模擬,你必須先要建立一個AVD(AndroidVirtual Device 虛擬設備),你能夠利用AVD建立基於不一樣版本的模擬器,下面就介紹如何建立AVD:瀏覽器
(1)查看當前支持版本(在列出的版本中咱們須要記住id值,這個值在第2步中使用):緩存
magicyu@magicyu-desktop:~$androidlist target
你能夠看到幾個AvailableAndroidtargets,好比:Name:Android1.6,他們有各自的id號。
(2)建立AVD:
magicyu@magicyu-desktop:~$androidcreate avd -n magicyu -t 2
-n後面接須要建立avd的名字,-t後面接須要建立虛擬器的類型,2即爲步驟(1)中獲得的類型id號。
(3)查看是否建立成功(若是成功會顯示剛纔咱們建立的avd信息):
magicyu@magicyu-desktop:~$androidlist avd
(4)啓動模擬器:
magicyu@magicyu-desktop:~$emulator@magicyu 或者
emulator-avdmagicyu
其中@和-avd後接的是你建立過的avd名字
(5)選擇啓動的皮膚
magicyu@magicyu-desktop:~$emulator-avd magicyu -skin QVGA
skin後面接所要啓動皮膚的類型,全部的類型能夠在/platforms/android-1.*/skins目錄下找到,*爲所指的版本。如在1.6版本的SDK下有HVGA,QVGA,WVGA800,WVGA854幾種。按Ctrl+F11,能夠直接改變模擬器的橫縱擺放。
Android模擬器的一些工具
(1)adb:
ADB(AndroidDebugBridge)是Android提供的一個通用的調試工具,藉助這個工具,咱們能夠管理設備或手機模擬器的狀態還能夠進行如下的操做:
a、快速更新設備或手機模擬器中的代碼,如應用或Android系統升級;
b、在設備上運行shell命令;
c、管理設備或手機模擬器上的預約端口;
d、在設備或手機模擬器上覆制或粘貼文件
一些經常使用的操做:
進入Shell:adbshell
經過上面的命令,就能夠進入設備或模擬器的shell環境中,在這個LinuxShell中,你能夠執行各類Linux的命令,另外若是隻想執行一條shell命令,能夠採用如下的方式:
adbshell[command]
如:adbshelldmesg會打印出內核的調試信息。
(Android的linuxshell作了大量精簡,不少linux經常使用指令都不支持)
上傳文件:adbpush
下載文件:adbpull
安裝程序:adbinstall
卸載軟件:adbshell rm /data/app/
補充一點,經過adb安裝的軟件(*.apk)都在」/data/app/」目錄下,因此安裝時沒必要制定路徑,卸載只須要簡單的執行」rm」就行。
結束adb:adbkill-server
顯示android模擬器狀態:
adbdevices(端口信息)
adbget-product(設備型號)
adbget-serialno(序列號)
等待正在運行的設備:adbwait-for-device
端口轉發:adbforward adb forward tcp:5555 tcp:1234
(將默認端口TCP5555轉發到1234端口上)
查看bug報告:adbbugreport
adbshellsqlite3 訪問數據庫SQLite3
adbshelllogcat -b radio 記錄無線通信日誌:通常來講,無線通信的日誌很是多,在運行時不必去記錄,但咱們仍是能夠經過命令,設置記錄
應用程序配置文件:
「AndroidManifest.xml」中
「」
決定是否應用程序是否顯示在Panel上
(2)am指令(在shell內使用am來加載android應用):
am[start|instrument]
amstart[-a ]
[-d]
[-t]
[-c[-c] …]
[-e[-e...]
[-n][-D] []
aminstrument[-e ]
[-p]
[-w]
啓動瀏覽器:
amstart-a android.intent.action.VIEW -d http://www.google.cn/
撥打電話:
amstart-a android.intent.action.CALL -d tel:10086
啓動googlemap直接定位到北京:
amstart-a android.intent.action.VIEW geo:00?q=beijing
(3)爲模擬器加上SD卡:
emulator-sdcarddcard.img
下面咱們再來講說如何建立」sdcard.img」文件:
「tools」目錄下還有另一個很好用的工具mksdcard,一看名字就知道——makesdcard。對,就用它來建立一個「SD卡」。
命令爲:
mksdcard1024MD:dcard.img
OK這樣一個容量爲1G的SD卡就建立完畢了。
使用SDCard:
建立:mksdcard
(bytes(default),K,M)
鏈接到模擬器:emulator-sdcard
傳文件到SDCard:adbpush
(4)Android模擬器打電話發短信
GPhone的模擬器有個特有的號碼:15555218135,這個就相似咱們實體手機的SIM卡號碼啦。要實現撥號,用手機?固然不行!
更簡單,三步:
1.打開終端
2.鏈接:telnetlocalhost 5554(5554是你打開模擬器後上面顯示的數字)
3.命令:gsmcall15555218135
look!是否是模擬器上顯示來電了?接聽/掛斷和實體手機同樣。
發短信也同樣簡單,重複上面1,2兩步,第三部命令改一下:
smssend15555218135 Hellothis is a Message.
4、Android模擬器主要命令參數介紹
emulator[-[]] … [-]
下面的表總結了可用的參數
Help
-help打印模擬器參數列表。
-help-all打印全部啓動參數明細。
-help-打印指定啓動參數的信息。
-help-debug-tags打印全部被-debug打開的列表。
-help-disk-images打印正在使用的磁盤鏡像信息。
-help-environment打印模擬器環境變量信息。
-help-keys打印當前的鍵盤映射。
-help-keyset-file打印一個自定義的鍵盤映射文件的定義。
DiskImages
-cache使用指定網絡緩存分區鏡像。
自定義,您能夠指定一個當前工做目錄的相對路徑。若是沒有指定緩存文件,模擬器會指定一個零時文件做爲緩存文件。更多信息請參考-help-disk-images.
-data使用做爲用戶數據磁盤鏡像。
自定義,您能夠指定一個當前工做目錄的相對路徑。若是-data沒有被使用,模擬器會在指定的目錄下尋找名叫」userdata-qemu.img」的鏡像文件。默認狀況下,模擬器會尋找~/.android(onLinux/Mac)。
若是您使用了-data,可是文件並不存在,模擬器將建立同名文件。
更多信息請參見運行多個模擬器實例和-help-disk-images。
-image使用做爲系統鏡像。
自定義,您能夠指定一個當前工做目錄的相對路徑。默認爲/system.img。
-initdata
重寫用戶數據鏡像時,(使用-wipe-data),複製此文件內容到新用戶數據文件鏡像中。默認方式下,模擬器拷貝/userdata.img。
自定義,您能夠指定一個當前工做目錄的相對路徑。參見-wipe-data。
更多信息請參見-help-disk-images。
-kernel使用做爲模擬器內核。自定義,您能夠指定一個當前工做目錄的相對路徑。
-nocache啓動模擬器時無緩存分區。參見-cache。
-ramdisk使用做爲虛擬內存鏡像。默認爲/ramdisk.img.自定義,您能夠指定一個當前工做目錄的相對路徑。更多信息請參見-help-disk-images。
-sdcard使用做爲SD卡鏡像。默認爲/sdcard.img.自定義,您能夠指定一個當前工做目錄的相對路徑。更多信息請參見-help-disk-images。
-system在指定的下搜索系統、虛擬內存和用戶數據鏡像文件。爲當前路徑的相對目錄。
-wipe-data重至用戶數據鏡像文件。(thatisthe file specified by -datadir and -data or the defaultfile).模擬器刪除全部用戶數據,而後複製右-inidata參數指定的數據到鏡像文件,在啓動以前。參見-initdata.更多信息請參見-help-disk-images。
Debug
-debug開啓/關閉指定tag的調試信息。
是一個被空格/逗號/縱列所分割的調試組建名稱列表。更多信息參見-help-debug-tags。
-debug-開啓/關閉指定tag的調試信息。使用-help-debug-tags得到您能夠指定爲的調試組件列表。
-debug-no-關閉指定tag的調試信息。
-logcat打開指定tag的日誌輸出。若是環境變量ANDROID_LOG_TAGS被指定且不爲空,她的值將成爲日誌輸出的默認值。
-shell建立一個擁有root權限的命令行窗口。即便模擬器的UI界面沒法使用了,您依然可使用命令行窗口。按Ctr-c鍵中斷模擬器運行。
-shell-serial打開具備root權限的腳本窗口。必須是一個QEMU類型的設備。參見’serial-dev’在http://www.bellard.org/qemu/qemu-doc.html#SEC10上關於設備類型的列表信息。這兒有一些例子:
·-shell-serialstdio is identical to -shell
·-shell-serialtcp::4444servernowait 讓您的shell能夠經過4444端口通信。
·-shell-serialfdpair:3:6 讓模擬器可使用3(in)和6(out)磁碟機。
·-shell-serialfdpair:0:1 uses the normal stdin and stdout fds exceptthat QEMU won’ttty-cook the data.
-show-kernel顯示內核信息。
-traceEnablecode profiling (press F9 to start) written to a specifiedfile.
-verbose開啓冗長輸出。Equivalentto-debug-init.您能夠定義ANDROID_VERBOSE環境變量做爲冗長輸出參數。定義你想用到的參數,用逗號分割。這樣能夠省略像-debug-這樣的參數。下面是一個設置ANDROID_VERBOSE的例子,它帶有-debug-init和-debug-modem參數:
ANDROID_VERBOSE=initmodem更多信息參見.
Media
-audio使用指定的音頻後端。
-audio-in使用指定的音頻輸入後端。
-audio-out使用指定的音頻輸出後端。
-noaudio在當前虛擬機實例中關閉音頻支持。
-radio從新定向收音機接口到本地的字節設備。
-useaudio打開模擬器實例的音頻支持。默認爲打開。
Network
-dns-server使用指定的DNS服務器。必須是以逗號分割,多於4個的服務器名或IP地址。
-http-proxy配置TCP鏈接使用HTTP/HTTPS代理。
必須符合如下格式:http://:
http://:@:前綴http://能夠被忽略。若是-http-proxy未被指定,模擬器將尋找http_proxy環境變量,而且自動尋找全部符號格式要求的值。
-netdelay設置網絡延遲默認值爲none。參見NetworkDelayEmulation中關於的值。
-netfast快捷的-netspeedfull-netdelay none
-netspeed指定模擬器網絡速度爲.默認值爲full。參見表格NetworkSpeedEmulation 中的值。
-port指定模擬器網絡端口爲.控制檯端口號必須介於5554和5584之間,而且+1必須留做ADB使用。
-report-console啓動前向第三方同志此模擬器實例的網絡端口。必須是如下幾種格式
tcp:[server][max=]
unix:[server][max=]
更多信息參見-help-report-console
System
-cpu-delay下降模擬器CPU的速度到。支持0到100的整數。注意與具體的時鐘或其餘的絕對頻率無關。它只表現爲一種抽象的,相對於當前模擬器運行情況的速度調節。
-gps重定向NMEAGPS到字節設備。
使用此參數通知模擬器模擬一個NMEA-compatibleGPS,鏈接到一個擴展的設備或socket端口。格式必須符合QEMU-specific所指定的設備格式。更多信息參見’serial-dev’ 和http://www.bellard.org/qemu/qemu-doc.html#SEC10.
-nojni在Dalvik運行時關閉JNI檢查
-qemu傳遞參數到qemu。
-qemu-h關閉qemu幫助。
-radio重定向錄音機模塊到制定的字符設備。格式必須符合QEMU規定的序列設備。詳情參見http://www.bellard.org/qemu/qemu-doc.html#SEC10.
-timezone設定模擬器時區爲,替換爲系統時區。必須按照時區格式指定。好比:」America/Los_Angeles」,」Europe/Paris」
-version顯示模擬器版本號。
UI
-dpi-device修改模擬器的分辨率適配物理設備。默認值爲165。參見-scale.
-no-boot-anim關閉模擬器啓動時的動畫。禁用啓動動畫能夠加快啓動速度。
-no-window關閉模擬器的繪製窗口。
-scale調整模擬器窗口。是介於0.1到3的數字,它是調整屏幕的比例因子。您也能夠指定一個DPI值,在添加dpi前綴的狀況下。Auto參數告訴模擬器選擇本身最合適的尺寸。
-raw-keys關閉Unicode鍵盤reverse-mapping.
-noskin不使用任何模擬器皮膚。
-keyset用指定的鍵盤設置文件代替默認。指定宿主鍵盤和模擬器之間的鍵盤映射文件。更多信息參見-help-keyset。
-onion用圖片覆蓋屏幕。不支持JPEG,只支持PNG
-onion-alpha指定onion皮膚透明值(百分比)默認爲50.
-onion-rotation指定onion皮膚旋轉。必須是 012 3中的一個。
-skin啓動模擬器,搭配指定皮膚。
-skindir在指定目錄下搜索皮膚