Android模擬器正確應(yīng)用與安裝方法
手機(jī)從出現(xiàn)至今,已經(jīng)逐漸的成為了人們的必備工具之一。許多廠家都在不斷的改變手機(jī)的功能,提升其在生活工作中所占據(jù)的重要地位。Google公司推出了一款手機(jī)操作系統(tǒng)Android,可以提升手機(jī)性能,方便靈活的應(yīng)用于人們的生活與工作中。在這里我們就先來(lái)了解一下這一系統(tǒng)中Android模擬器的相關(guān)概念。
要玩GPhone的Android模擬器,當(dāng)然需要先去google上面下載Android的SDK,解壓出來(lái)后在SDK的根目錄下有一個(gè)tools文件夾,里面就是模擬器和一些非常有用的工具。
雙擊“emulator.exe”,直接啟動(dòng)模擬器,簡(jiǎn)單吧。當(dāng)然,如果要對(duì)模擬器進(jìn)行一些定制,還是要從命令行調(diào)用,帶上參數(shù)啟動(dòng)。下面就來(lái)介紹一下啟動(dòng)是常用的幾個(gè)參數(shù):
1.Android模擬器外觀的定制:
- 480x320, landscape: emulator -skin HVGA-L
- 320x480, portrait : emulator -skin HVGA-P (default)
- 320x240, landscape: emulator -skin QVGA-L
- 240x320, portrait : emulator -skin QVGA-P
2.為Android模擬器加上SD卡:
- emulator -sdcard D:\sdcard.img
下面我們?cè)賮?lái)說(shuō)說(shuō)如何創(chuàng)建"sdcard.img"文件:
“tools”目錄下還有另外一個(gè)很好用的工具“mksdcard.exe”,一看名字就知道——make sdcard。對(duì),就用它來(lái)創(chuàng)建一個(gè)“SD卡”。
命令為:
- mksdcard 1024M D:\sdcard.img
OK,這樣一個(gè)容量為1G的SD卡就創(chuàng)建完畢了。#t#
使用SDCard:
創(chuàng)建: mksdcard < 1024M> < sdcard.img>
(bytes(default),K,M)
連接到Android模擬器: emulator -sdcard < 目錄/sdcard.img>
傳文件到SDCard: adb push < 目錄/audio.mp3> < /sdcard/audio.mp3>
玩過(guò)手機(jī)模擬器的人一般最感興趣的當(dāng)然是模擬器能做什么呢?下面一一道來(lái):
GPhone的模擬器有個(gè)特有的號(hào)碼:15555218135,這個(gè)就類似我們實(shí)體手機(jī)的SIM卡號(hào)碼啦。要實(shí)現(xiàn)撥號(hào),用手機(jī)?當(dāng)然不行!
更簡(jiǎn)單,三步:
1.運(yùn)行 cmd
2.連接: telnet localhost 5554
3.命令:gsm call 15555218135
look!是不是Android模擬器上顯示來(lái)電了?接聽(tīng)/掛斷和實(shí)體手機(jī)一樣。
發(fā)短信也一樣簡(jiǎn)單,重復(fù)上面1,2兩步,第三部命令改一下:
sms send 15555218135 Hello,this is a Message.
來(lái)說(shuō)說(shuō)PC與模擬器文件傳輸?shù)姆椒ò?。這里需要用到另一個(gè)重要工具,也在“tools”目錄下,“adb.exe”。
adb:
adb(Android Debug Bridge)是Android 提供的一個(gè)通用的調(diào)試工具,借助這個(gè)工具,我們可以管理設(shè)備或手機(jī) 模擬器 的狀態(tài) 。還可以進(jìn)行以下的操作:
1、快速更新設(shè)備或手機(jī)模擬器中的代碼,如應(yīng)用或Android系統(tǒng)升級(jí);
2、在設(shè)備上運(yùn)行shell命令;
3、管理設(shè)備或Android模擬器上的預(yù)定端口;
4、在設(shè)備或手機(jī)模擬器上復(fù)制或粘貼文件
一些常用的操作:
進(jìn)入Shell: adb shell
通過(guò)上面的命令,就可以進(jìn)入設(shè)備或模擬器的shell環(huán)境中,在這個(gè)Linux Shell中,你可以執(zhí)行各種Linux 的命令,另外如果只想執(zhí)行一條shell命令,可以采用以下的方式:
adb shell [command]
如:adb shell dmesg會(huì)打印出內(nèi)核的調(diào)試信息。
(Android的linux shell做了大量精簡(jiǎn),很多l(xiāng)inux常用指令都不支持)
上傳文件: adb push < PC文件> < /tmp/...>
下載文件: adb pull < /tmp/...> < PC文件>
安裝程序: adb install < *.apk>
卸載軟件: adb shell rm /data/app/< *.apk>
補(bǔ)充一點(diǎn),通過(guò)adb安裝的軟件(*.apk)都在"/data/app/"目錄下,所以安裝時(shí)不必制定路徑,卸載只需要簡(jiǎn)單的執(zhí)行"rm"就行。
結(jié)束adb: adb kill-server
顯示Android模擬器狀態(tài):
- adb devices (端口信息)
- adb get-product (設(shè)備型號(hào))
- adb get-serialno (序列號(hào))
等待正在運(yùn)行的設(shè)備: adb wait-for-device
端口轉(zhuǎn)發(fā): adb forward adb forward tcp:5555 tcp:1234
(將默認(rèn)端口TCP 5555轉(zhuǎn)發(fā)到1234端口上)
查看bug報(bào)告: adb bugreport
adb shell sqlite3 訪問(wèn)數(shù)據(jù)庫(kù)SQLite3
adb shell logcat -b radio 記錄無(wú)線通訊日志: 一般來(lái)說(shuō),無(wú)線通訊的日志非常多,在運(yùn)行時(shí)沒(méi)必要去記錄,但我們還是可以通過(guò)命令,設(shè)置記錄:
應(yīng)用程序配置文件:
- "AndroidManifest.xml"中
- "< category android:name="android.intent.category.LAUNCHER" />"
決定是否應(yīng)用程序是否顯示在Panel上
am指令(在shell內(nèi)使用am來(lái)加載android應(yīng)用):
- 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>
#p#
啟動(dòng)瀏覽器:
am start -a android.intent.action.VIEW -d http://www.google.cn/
撥打電話:
am start -a android.intent.action.CALL -d tel:10086
啟動(dòng)google map直接定位到北京:
am start -a android.intent.action.VIEW geo:0,0?q=beijing
目錄:
- # ls
- ls
- sqlite_stmt_jou
- cache
- sdcard
- etc
- init
- init.goldfish.r
- init.rc
- data
- system
- proc
- sys
- sbin
- default.prop
- root
- dev
這里要說(shuō)明下,從andorid中得到的文件流的字符串的順序是按“類型+權(quán)限+擁有者+數(shù)組+大小+日期+名稱+鏈接到”順序排列的,其中類型“d”表示的是文件夾,"l"表示的是鏈接,'-'表示的是文件。
例如d rwxrwx--- system cache 2009-01-09 11:46 cache
上面的目錄就是通過(guò)解析ls命令返回的字符串進(jìn)行解析的。
數(shù)據(jù)庫(kù):
- 聯(lián)絡(luò)人(含通話記錄)數(shù)據(jù)庫(kù):
- /data/data/com.android.providers.contacts/databases/contacts.db
- 媒體庫(kù)(貌似記錄鈴聲設(shè)置等信息):
- /data/data/com.android.providers.media/internal.db
- 系統(tǒng)設(shè)置:
- /data/data/com.android.providers.settings/databases/settings.db
- 短信庫(kù):
- /data/data/com.android.providers.telephony/databases/mmssms.db
- Web設(shè)置:
- /data.data/com.android.settings/databases/webview.db
- 地圖搜索歷史記錄:
- /data/data/com.google.android.apps.maps/databases/search_history.db
- 帳號(hào)庫(kù)?(內(nèi)含androidId信息) :
- /data/data/com.google.android.googleapps/databases/accounts.db
- 鈴聲: /system/media/audio
- 時(shí)區(qū)設(shè)置:
- /data/property/persist.sys.timezone
目前的安裝模式
安裝前:
- emulator -wipe-data
- adb push busybox ./
- adb shell ./busybox tar -cf /tmp/data.tar /data
- adb pull /tmp/data.tar .
- mkdir original
- cd original
- tar -xf ../data.tar
安裝后:
- adb shell ./busybox tar -cf /tmp/data.tar /data
- adb pull /tmp/data.tar .
- mkdir after_install
- cd after_install
- tar -xf ../data.tar
目前來(lái)看,就是/data/app和data/data下多了兩個(gè)相關(guān)文件,同時(shí)在/data/system/packages.xml中增加了安裝的程序信息。似乎菜單也是從這個(gè)文件中得到是否新安裝程序,以及如何顯示相關(guān)信息比如名稱什么的。
Android模擬器和真機(jī)的不同之處:
- * 不支持呼叫和接聽(tīng)實(shí)際來(lái)電;但可以通過(guò)控制臺(tái)模擬電話呼叫(呼入和呼出)
- * 不支持USB連接
- * 不支持相機(jī)/視頻捕捉
- * 不支持音頻輸入(捕捉);但支持輸出(重放)
- * 不支持?jǐn)U展耳機(jī)
- * 不能確定連接狀態(tài)
- * 不能確定電池電量水平和交流充電狀態(tài)
- * 不能確定SD卡的插入/彈出
- * 不支持藍(lán)牙
Android模擬器使用注意:
平時(shí)使用emulator測(cè)試開(kāi)發(fā)的網(wǎng)友注意應(yīng)該定期清理下C:\Documents and Settings\sh\Local Settings\Temp\AndroidEmulator文件夾,由于Android模擬器每次運(yùn)行時(shí)會(huì)臨時(shí)生成幾個(gè).tmp后綴的臨時(shí)文件,沒(méi)有幾個(gè)月功夫簡(jiǎn)單一看竟然占用磁盤空間高達(dá)5GB之多。這些文件網(wǎng)友可以安全的刪除。