讀古今文學網 > Android程序設計:第2版 > SDK的組件 >

SDK的組件

Android SDK的主體是通用組件,輔以一些專用組件。在很多情況下,配置、插件和擴展是這些組件在Android中的實現形式。Android SDK的開發是一個對現代化和完整的SDK進行高效開發的研究。Google為了能夠快速地把Android推向市場採用了這種方式。在探索Android SDK的過程中,你會感受到這一點。Eclipse、Java語言、QEMU及其他已有的平台、工具和技術一起組成了Android SDK最重要的組成部分。

在創建簡單的應用來確認SDK安裝的過程中,已經用過了SDK的很多組件。這裡將找出並具體介紹在創建程序中所涉及的SDK組件及一些其他將要使用的組件。

Android Debug Bridge

Android Debug Bridge(adb)是一個程序,通過它你既可以控制模擬器,也能控制設備,並且其還提供了一個命令行接口,使我們可以直接執行模擬器或設備環境中的命令。通過adb,從模擬器或設備中安裝和刪除應用特別方便。關於adb的文檔說明可以在這裡獲取:http://developer.android.com/guide/developing/tools/adb.html。

Dalvik調試監控服務器

Dalvik調試監控服務器(Dalvik Debug Monitor Server,DDMS)是一個流量控制器,位於Eclipse(也適用於其他Java調試器)連接到Java虛擬機(JVM)的單個端口和各台Android物理或虛擬設備上的Dalvik虛擬機(VM)實例中的端口之間。DDMS還提供了一組功能,這些功能可通過一個獨立運行的用戶界面或通過ADT插件嵌入到Eclipse中的一個界面來訪問。

從命令行調用DDMS時,可以看到如圖1-12所示的窗口。

圖1-12:獨立運行的Dalvik調試監控服務器

Dalvik調試監控服務器可以訪問以下信息:

所有的物理設備和虛擬設備及運行於這些設備上的虛擬機列表

在Dalvik調試監控服務器窗口的左上角是已經連接到PC上的Android設備列表,以及正在運行的各種AVD設備。在每個設備或虛擬設備下的列表是在Dalvik虛擬機中運行的任務。

虛擬機信息

選擇一個在設備或虛擬設備上運行的Dalvik虛擬機,在右上區域會顯示該虛擬機的信息。

線程信息

在每個進程內的線程信息可以通過Dalvik調試監控服務器窗口右上角的Threads選項卡來訪問。

文件系統資源管理器(Filesystem explorer)

選擇Devices→File explorer菜單命令可以打開Dalvik調試監測服務器的文件系統資源管理器(filesystem explorer),其中列出設備或虛擬設備的文件系統信息。它會在窗口中顯示出如圖1-13所示的文件層次結構。

圖1-13:DDMS的文件系統資源管理器

模擬電話呼叫

在DDMS窗口右上角的Emulator Control選項卡支持在模擬器中「模擬」電話呼叫或發送短信。

抓屏

選擇Device→Screen capture菜單命令可以將當前選中的Android設備或虛擬設備當前的屏幕圖像截取下來。

日誌

DDMS窗口下方顯示的是在選定的設備或虛擬設備中的日誌輸出。在日誌窗格上方的工具欄按鈕中有一個過濾器,其可以對輸出的日誌進行過濾。

設備、應用和移動無線電台的轉儲狀態

Device菜單中的這組命令可以使我們能夠通過命令控制設備或虛擬設備導出整個設備、某個應用或移動無線電台的狀態。

關於DDMS的詳細信息可以在這裡獲取:http://developer.android.com/guide/developing/tools/ddms.html。

ADT Eclipse插件的組件

Eclipse使我們能夠創建特定的項目類型,包括幾種不同類型的Java項目。ADT插件添加了創建和使用Android項目的能力。新建Android項目時,ADT插件會自動生成項目所需的各級目錄及Android項目所必需的所有文件。對於Android項目,通過ADT插件的各個組件Eclipse能夠對項目進行編輯、構建、運行和調試。

在某些情況下,SDK組件可以在Eclipse中使用或者以獨立模式使用。但是,在本書中的絕大多數Android應用開發案例中,這類組件是在Eclipse中使用的。

ADT插件包含很多不同的組件,而且雖然「插件」的含義只是表示增強,但ADT插件實際上包含大量的軟件。這裡將介紹使用Eclipse開發Android軟件的過程中將會用到的各個重要的組件。

Android的佈局編輯器

在Android應用中,用戶界面佈局可以使用XML描述。ADT插件增加一個了可視化編輯器,可以用它構建和預覽Android佈局。當打開一個佈局文件時,ADT插件會自動啟動該編輯器,可使用它對文件進行查看和編輯。通過編輯窗格底部的選項卡可以在可視化編輯器和XML編輯器之間進行切換。

對於早期版本的Android SDK,Android佈局編輯器局限太多,用處不大。然而,現在可以考慮使用Android佈局的可視化編輯器作為創建佈局的首選方式。自動生成的佈局兼容性往往更強,用這種方式構建的應用更有可能在Android設備上得到廣泛應用。

Android Manifest編輯器

在Android項目中,在構建項目時,項目的軟件和資源包含聲明(manifest)文件。該文件告訴Android系統如何安裝和使用包含所構建的項目的庫文件的軟件。聲明文件的格式是XML,ADT插件提供專用的XML編輯器來編輯該聲明文件。

ADT Eclipse插件的其他組件,如應用生成器(application builder),也可能對聲明文件進行修改。

其他Android XML文件的XML編輯器

其他Android XML文件包含的信息包括:菜單說明、資源信息(例如字符串)和組織應用程序的圖形的信息等。當打開這些文件時,相應的編輯器就會打開。

構建Android應用

Eclipse項目通常是自動構建的。因此,通常情況下,不需要把一個項目的源代碼和資源轉換成可部署的結果。Android需要特定的步驟生成一個可以部署到Android模擬器或設備的文件,ADT插件提供了生成這些執行步驟的插件。構建Android項目,會生成.apk文件,可以在Eclipse工作區中項目文件層次結構下面的bin子目錄下,找到本章之前所創建的test項目的.apk文件。

在ADT插件中提供的特定的Android生成器使我們能夠用Java語言來創建Android軟件,可以在Dalvik VM下運行該軟件,以執行其二進制代碼。也就是說,這些生成器還把Java編譯器生成的Java字節碼輸出轉換成Dalvik字節碼。這些生成器還會生成.apk文件。和.jar文件相比,這些.apk文件的結構和內容都不同。

運行和調試Android應用

當在Eclipse內運行或調試Android項目時,會在AVD或Android設備上部署並啟動.apk文件,並使用ADB和DDMS與AVD或Android設備及運行於設備之上的負責運行代碼的Dalvik運行時環境。ADT插件所附帶的一些組件使得Eclipse能夠支持這一功能。

DDMS

P24「Dalvik調試監控服務器」一節介紹了Dalvik調試監控服務器及從命令行調用DDMS用戶界面的方式。Eclipse環境內也包含DDMS用戶界面,可以通過Eclipse菜單命令Window→Open Perspective→DDMS打開它。還可以通過菜單命令Window→Show View單獨查看DDMS的各個視圖,例如可以單獨查看LogCat視圖。

Android虛擬設備

Android虛擬設備(AVD)由基於QEMU的模擬器組成,該模擬器能夠模擬Android設備的硬件和Android系統鏡像,鏡像包含要在模擬硬件上運行的Android軟件。AVD由SDK和AVD管理器配置,通過該管理器可以對一些參數進行設置,如存儲設備的大小和屏幕的尺寸,還可以指定哪個Android系統鏡像用於哪個模擬設備。

通過AVD,我們可以方便地做到在不同類型的系統上測試應用。如果沒有AVD,很難獲取到這麼多樣化的軟件和物理設備。因為基於QEMU的硬件模擬器、系統鏡像和AVD參數都是可替換的組件,可以在硬件可用之前,對設備和系統鏡像進行先期測試。

QEMU

QEMU是AVD的基礎,但QEMU是一個通用工具,其可以用於Android SDK以外的很多模擬系統中。雖然可以通過SDK和AVD管理器間接地對QEMU進行配置,但是也可能有一天我們需要對SDK工具所不支持的係數進行調整,或者對QEMU的能力和局限性感興趣。幸運的是,QEMU有廣泛、活躍的開發和用戶社區,可以在http://www.qemu.org上找到很多資料。

SDK和AVD管理器

QEMU是一個通用模擬器系統。Android SDK支持對QEMU進行配置,支持創建能夠運行Android系統鏡像的模擬器。SDK和AVD管理器提供了用戶界面來控制基於QEMU的Android虛擬設備。

其他SDK工具

除了在大多數開發項目中都會用到的主流工具之外,在SDK中還包含了一些其他工具,這有一些開發人員直接使用或調用的工具,接下來對這些工具進行介紹。在Android文檔的Tools Overview中列出SDK的更多組件,可以在這裡查看詳細信息:http://developer.android.com/guide/developing/tools/index.html。

層次結構查看器

層次結構查看器(Hierarchy Viewer)支持對選定的Android設備的當前活動的視圖層次結構進行顯示和分析。通過視圖層次結構,可以查看和分析正在運行的應用,或者還可以查看其他應用以分析這些應用的設計。其還可以用於放大屏幕,根據邊界對齊說明,確定佈局的問題。

Layoutopt

Layoutopt是一個靜態的分析器,用於分析XML佈局文件,用它可以診斷出Android佈局的一些問題。關於Layoutopt的詳細信息可以在這裡獲取:http://developer.android.com/guide/developing/tools/layoutopt.html。

Monkey

Monkey是一個自動化測試工具,它可以在模擬器或設備上運行。可以使用SDK中的adb命令來調用這個工具。使用adb命令可以在模擬器或設備上啟動shell,Monkey是從shell控制台啟動的,例如:


adb shell monkey --wait-dbg -p your.package.name 500
 

該Monkey工具的調用在連接上一個調試器後,會向指定的應用發送500個隨機事件(通過包名來指定)。關於Monkey的更多介紹可以在這裡找到:http://developer.android.com/guide/developing/tools/monkey.html。

sqlite3

Android內的數據庫系統採用了SQLite,同時還為應用提供了訪問API,這一點對於數據存儲和呈現很便利。SQLite還提供了命令行接口,即sqlite3命令行工具,該工具支持從數據庫中轉儲模式,還支持在Android數據庫上執行一些其他操作。

這些數據庫內置在Android設備或者AVD中,因此,在adb shell控制台中可以直接執行sqlite3命令。有關通過adb控制台使用命令行工具sqlite3的詳細說明可以在下面獲取:http://developer.android.com/guide/developing/tools/adb.html#shellcommands。此外,後面將在P256「使用sqlite3的數據庫操作示例」一節中對sqlite3命令進行詳細介紹。

keytool

使用keytool工具可以生成加密密鑰,ADT插件使用這個工具創建臨時調試密鑰,在調試時輸入該密鑰簽名。在大多數情況下,在發佈應用時可以使用這個工具來創建簽名證書,其創建過程詳見P128「創建自簽名的證書」一節。

Zipalign

Zipalign支持對要發佈的Android應用產品的數據訪問方式進行優化。該優化必須在應用簽署發佈後才可以執行,因為簽名會影響到字節對齊。關於Zipalign的更多信息可以在這裡找到:http://developer.android.com/guide/developing/tools/zipalign.html。

Draw9-patch

Draw 9-patch是一種特殊的Android資源,由9張圖片組成,當需要時該工具很有用,例如對按鈕無需改變其轉角的半徑就可以變大。Draw 9-patch是一個專門創建和預覽這類資源的繪圖程序。更多關於Draw 9-patch的介紹可以在這裡找到:http://developer.android.com/guide/developing/tools/draw9patch.html。

android

android命令,用於在命令行中啟動SDK和AVD管理器,具體方法在P11「Android SDK」一節中已經進行了介紹。使用這條命令,還可以從命令行創建Android項目。android命令能夠用來自動地生成所有的項目文件、聲明文件,還會自動構建屬性和項目的ant腳本。關於android命令的詳細使用說明可以在這裡找到:http://developer.android.com/guide/developing/other-ide.html#CreatingAProject。