![]() |
|
Android SDK開(kāi)發(fā)環(huán)境搭建 |
|
基于SDK進(jìn)行Android應(yīng)用的開(kāi)發(fā),首先需要進(jìn)行基于SDK的開(kāi)發(fā)環(huán)境的搭建。開(kāi)發(fā)者安裝Eclipse,然后下載相應(yīng)的Android SDK下載工具包和ADT插件,按照//developer.android.com上的安裝步驟進(jìn)行安裝。不過(guò),在Android 2.3中,對(duì)應(yīng)的ADT 8.0.0的文件布局發(fā)生了變化,導(dǎo)致ADT 8.0.0無(wú)法兼容Foryo及以下Android版本。 需要注意的是,在通過(guò)AVD管理器下載SDK時(shí),由于默認(rèn)采用了HTTPS的鏈接方式訪問(wèn)Android的官方倉(cāng)庫(kù),在部分機(jī)器上可能會(huì)因安全原因拒絕鏈接。為了完成下載,需要在AVD管理器的設(shè)置選項(xiàng)中,選擇“Force https://... sources to be fetched using //”和“Ask before restarting ADB”。 為了通過(guò)模擬器進(jìn)行開(kāi)發(fā)和調(diào)試,需要為目標(biāo)設(shè)備在開(kāi)發(fā)環(huán)境中創(chuàng)建相應(yīng)的虛擬設(shè)備。 在Android中,虛擬設(shè)備稱做AVD(Android Virtual Device)。在早期的Android SDK中,開(kāi)發(fā)者需要基于命令行的方式來(lái)創(chuàng)建AVD,在新的Android SDK下載工具包中,已經(jīng)提供了圖形界面的方式,使開(kāi)發(fā)者可以根據(jù)需要方便地創(chuàng)建AVD,查看AVD相關(guān)的信息。本質(zhì)上這是通過(guò)“Android”工具來(lái)實(shí)現(xiàn)的。 Android工具的命令行用法如下:android [global options] action [action options] 可用的“action”包括: -list //列出存在的目標(biāo)平臺(tái)和AVD 在Linux環(huán)境下的目標(biāo)平臺(tái)和AVD列表示例: Available Android targets: 顯示AVD設(shè)備列表的信息的操作方式為: 基于AVD管理器的圖形界面,開(kāi)發(fā)者可以用比命令行更方便的方式來(lái)創(chuàng)建和維護(hù)AVD。創(chuàng)建Android虛擬設(shè)備my_android的命令行方法為: 除了“Android”工具外,在“android-sdk-linux_86/tools”下,Android還提供了ddms、emulator、layoutopt、traceview、dmtracedump、hierarchyviewer、zipalign、apkbuilder、draw9patch、hprof-conv、mksdcard、sqlite3等多種實(shí)用工具。 另外在“android-sdk-linux_86/platforms/android-8/tools”下,Android還提供了aapt、aidl、dexdump、dx等工具。 在Foryo以后,Android將部分早期放置在“android-sdk-linux_86/platforms/android-?/tools”下的工具放置到了android-sdk-linux_86/platform-tools中,這部分工具包括aapt、adb、aidl、dexdump、dx等。這似乎表明Google任務(wù)在Dalvik虛擬機(jī)的優(yōu)化上已經(jīng)比較成熟。不會(huì)再有大的變化。 其中“emulator”提供了基于QEMU的模擬器,供開(kāi)發(fā)者進(jìn)行應(yīng)用的開(kāi)發(fā)、調(diào)試、測(cè)試。需要說(shuō)明的是,由于Android的模擬器是基于QEMU的,模擬了真實(shí)的ARM環(huán)境,所以Android的編譯與通常的嵌入式開(kāi)發(fā)不同,沒(méi)有所謂的“Home”端和“Target”端的概念。在默認(rèn)情況下,編譯輸出文件均是基于ARM體系結(jié)構(gòu)的(Android還提供了X86架構(gòu)的模擬器編譯),當(dāng)然Android模擬器尚不能完全模擬真實(shí)的物理設(shè)備,如支持的ARM指令目前僅限于ARMv5指令集,而不支持主流Cortex A8所需的ARMv7指令集,在LCD的顯示上,目前僅支持16bit,而不支持24bit,同樣觸控技術(shù)上,模擬器也不支持多點(diǎn)觸控。在啟動(dòng)emulator時(shí),需要指定相應(yīng)的AVD。 “hierarchyviewer”為開(kāi)發(fā)者調(diào)試和優(yōu)化UI界面提供了幫助,可以幫助開(kāi)發(fā)者在像素級(jí)別調(diào)整UI布局。 “l(fā)ayoutopt”可以幫助開(kāi)發(fā)者分析UI的布局,有助于開(kāi)發(fā)出更精細(xì)的UI。 “draw9patch”通過(guò)WYSIWYG編輯器幫助開(kāi)發(fā)者進(jìn)行2D圖形的瀏覽和維護(hù)。在Android開(kāi)發(fā)者,主要用于制作可伸縮的*.9.png格式的圖片上。 “ddms”幫助開(kāi)發(fā)者進(jìn)行應(yīng)用的調(diào)試,是開(kāi)發(fā)者常用的工具之一,也是Android重要的工具之一。 “adb”幫助開(kāi)發(fā)者在模擬器或物理設(shè)備上安裝APK文件、向SD卡上推拉文件或者連接GDB調(diào)試器。也是開(kāi)發(fā)者常用的工具之一。 “aapt”用來(lái)創(chuàng)建APK文件。開(kāi)發(fā)者一般不直接接觸。 “aidl”為Android的進(jìn)程間通信創(chuàng)建接口代碼,是Android多進(jìn)程通信的重要基礎(chǔ)。開(kāi)發(fā)者一般不直接接觸。進(jìn)程通信的更多內(nèi)容可以參考3.2節(jié)過(guò)程調(diào)用。 “sqlite3”幫助開(kāi)發(fā)者創(chuàng)建、查閱后綴為db的SQLite數(shù)據(jù)庫(kù)文件。需要注意的是,默認(rèn)情況下Android的SQLite數(shù)據(jù)庫(kù)文件沒(méi)有經(jīng)過(guò)加密處理,這在涉及敏感信息時(shí),是個(gè)比較大的風(fēng)險(xiǎn),好在相應(yīng)的加解密接口已經(jīng)存在,設(shè)備廠商只需要在底層加入選定的加密算法即可。另外,為了更方面的查閱SQLite數(shù)據(jù)庫(kù)文件,Linux下有個(gè)比較比較方面的工具即sqliteman。 “traceview”為Android應(yīng)用運(yùn)行過(guò)程中產(chǎn)生的日志的圖形界面。在Android中,將日志分為調(diào)試(Debug)、錯(cuò)誤(Error)、信息(Info)、詳情(Verbose)、警告(Warning)等5個(gè)等級(jí),在實(shí)際的開(kāi)發(fā)中,可以根據(jù)實(shí)際情況選用不同的等級(jí),就個(gè)人經(jīng)驗(yàn)而言,應(yīng)慎用“Error”等級(jí),純調(diào)試用途應(yīng)用“Debug”等級(jí)。使用“Debug”等級(jí)日志的另一個(gè)好處在于,在發(fā)布時(shí)可以很方便地關(guān)閉日志輸出。 “mksdcard”幫助開(kāi)發(fā)者創(chuàng)建SD卡的硬盤映像。其文件系統(tǒng)為FAT32,在通過(guò)圖形界面創(chuàng)建AVD時(shí),也可以同時(shí)創(chuàng)建SD卡, mksdcard的命令行參數(shù)如下: “dx”重寫(xiě)了Android的DEX字節(jié)碼,這是Android性能的關(guān)鍵和設(shè)計(jì)精華。開(kāi)發(fā)者一般不直接接觸。 “zipalign”為一個(gè)重要的APK優(yōu)化工具,在Donut中引入。提供了優(yōu)化后的應(yīng)用和系統(tǒng)的交互效率,從而使整個(gè)系統(tǒng)的運(yùn)行效率得到較大的提升。 Android SDK的頻繁升級(jí),為廣大的開(kāi)發(fā)者造成了很多的困擾,為了更新基于舊Android SDK開(kāi)發(fā)的工程,基于命令行方式的方法為: 精品課程推薦:Android應(yīng)用開(kāi)發(fā)培訓(xùn)班(FSAD1002) 課程目標(biāo) 熱點(diǎn)鏈接:
1、嵌入式linux入門要學(xué)什么
|