SDK (Software Development Kit) 軟件開發工具包是軟件開發工程師用於爲特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件的開發工具的集合。Android SDK 就是 Android 專屬的軟件開發工具包。
Android SDK 目錄結構
Android SDK 解壓即可完成安裝,其中包含的文件、文件夾如圖 1 所示。
圖 1 Android SDK 目錄結構圖
1) add-ons
該目錄中存放 Android 的擴展庫,比如 Google Maps,但若未選擇安裝 Google API,則該目錄爲空。
2) docs
該目錄是 developer.Android.com 的開發文檔,包含 SDK 平臺、工具、ADT 等的介紹,開發指南,API 文檔,相關資源等。
3) extras
該目錄用於存放 Android 附加支持文件,主要包含 Android 的 support 支持包、Google 的幾個工具和驅動、Intel 的 IntelHaxm。
4) platforms
該目錄用於存放 Android SDK Platforms 平臺相關文件,包括字體、res 資源、模板等。
5) platform-tools
該目錄包含各個平臺工具,其中主要包含以下幾部分。
名稱 | 作用 |
---|---|
api 目錄 | api-versions.xml 文件,用於指明所需類的屬性、方法、接口等 |
lib 目錄 | 目錄中只有 dx.jar 文件,爲平臺工具啓動 dx.bat 時加載並使用 jar 包裏的類 |
aapt.exe | 把開發的應用打包成 APK 安裝文件,如果用 Eclipse 開發,就不用通過命令窗口輸入命令+參數實現打包 |
adb.exe (Android Debug Bridge 調試橋) | 通過它連接 Android 手機(或模擬器)與 PC 端,可以在 PC 端上控制手機的操作。如果用 Eclipse 開發,一般情況 下 ADB 會自動啓動,之後我們可以通過 DDMS 來調試 Android 程序。 |
aidl.exe (Android Interface Definition Language) | Android 內部進程通信接口的描述語言,用於生成可以在 Android 設備進行進程間通信 (Inter-Process Communication,IPC) 的代碼 |
dexdump.exe | 可以反編譯 .dex 文件,例如 .dex 文件裏包含 3 個類,反編譯後也會出現 3 個 .class 文件,通過這些文件可以大概瞭解原始的 Java 代碼。(dump是轉儲的意思) |
dx.bat | 將 .class 字節碼文件轉成 Android 字節碼 .dex 文件 |
fastboot.exe | 可以進行重啓系統、重寫內核、查看連接設備、寫分區、清空分區等操作 |
Android llvm-rs-cc.exe | Renderscript 採用 LLVM 低階虛擬機,llvm-rs-cc.exe 的主要作用是對 Renderscript 的處理 |
NOTICE.txt 和 source.properties | NOTICE.txt 只是給出一些提示的信息;source.properties 是資源屬性信息文件,主要顯示該資源生成時間、系統類型、資源 URL 地址等。 |
6) samples
samples 是 Android SDK 自帶的默認示例工程,裏面的 apidemos 強烈推薦初學者學習。
7) system-images
該目錄存放系統用到的所有圖片。
8) temp
該目錄存放系統中的臨時文件。
9) tools
作爲 SDK 根目錄下的 tools 文件夾,這裏包含重要的工具,比如 ddms 用於啓動 Android 調試工具,如 logcat、屏幕截圖和文件管理器;而 draw9patch 則是繪製 Android 平臺的可縮放 PNG 圖片的工具;sqlite3 可以在 PC 上操作 SQLite 數據庫;而 monkeyrunner 則是一個不錯的壓力測試應用,模擬用戶隨機按鈕;mksdcard 是模擬器 SD 映像的創建工具;emulator 是 Android 模擬器主程序,不過從 Android 1.5 開始,需要輸入合適的參數才能啓動模擬器;traceview 是 Android 平臺上重要的調試工具。
Android.jar
作爲一個 Java 項目,通常情況下都會引入要用到的工具類,也就是 JAR 包。
在 Android 開發中,絕大部分開發用的工具包都被封裝到一個名叫 Android.jar 的文件裏了。在 Eclipse 中展開來看,可以看到 J2SE 中的包、Apache 項目中的包,還有 Android 自身的包文件。Android 的包文件主要包括以下內容:
名稱 | 作用 |
---|---|
Android.app | 提供高層的程序模型和基本的運行環境 |
Android.content | 包含各種對設備上的數據進行訪問和發佈的類 |
Android.database | 通過內容提供者瀏覽和操作數據庫 |
Android.graphics | 底層的圖形庫 |
Android.location | 定位和相關服務的類 |
Android.media | 提供一些類管理多種音頻、視頻的媒體接口 |
Android.net | 提供幫助網絡訪問的類,超過通常的 java.net.* 接口 |
Android.os | 提供系統服務、消息傳輸、IPC 機制 |
Android.openg | 提供 OpenGL 的工具 |
Android.provider | 提供類,訪問 Android 的內容提供者 |
Android.telephony | 提供與撥打電話相關的 API 交互 |
Android.view | 提供基礎的用戶界面接口框架 |
Android.util | 涉及工具性的方法,例如時間日期的操作 |
Android.webkit | 默認瀏覽器操作接口 |
Android.widget | 包含各種 UI 元素(大部分是可見的)在應用程序的屏幕中使用 |
Android API 擴展包
核心的 Android API 在每部手機上都可以使用,但仍然有一些 API 接口有各自特別的適用範圍,這就是所謂的“可選API”。這些 API 之所以是“可選的”,主要是因爲一個手持設備並不一定要完全支持這類 API,甚至可以完全不支持。
1) Location-Based Services(定位服務)
Android 操作系統支持 GPS API-LBS,可以通過集成 GPS 芯片來接收衛星信號,通過 GPS 全球定位系統中至少 3 顆衛星和原子鐘來獲取當前手機的座標數據,通過轉換就可以成爲地圖上的具體位置,這一誤差在手機上可以縮小到 10 米。在谷歌開發手機聯盟中可以看到著名的 SiRF star。所以未來 gPhone 手機上市時集成 GPS 後的價格不會很貴。
同時,谷歌正在研製基於基站式的定位技術——MyLocation,可以更快速地定位,與前者 GPS 定位需要花費大約 1 分鐘相比,基站定位更快。
2) Media APIs(多媒體接口)
Android 平臺上集成了很多影音解碼器以及相關的多媒體 API,通過這些可選 API,廠商可以讓手機支持 MP3、MP4、高清晰視頻播放處理等。
3) 3D Graphics with OpenGL(3D 圖形處理 OpenGL)
可選 API。Android 平臺上的遊戲娛樂功能,如支持 3D 遊戲或應用場景就需要用到 3D 技術,手機生產廠商根據手機的屏幕以及定位集成不同等級的 3D 加速圖形芯片來加強 gPhone 手機的娛樂性,有來自高通的消息稱,最新的顯示芯片在 gPhone 上將會輕鬆超過索尼 PS3。
4) Low-Level Hardware Access(低級硬件訪問)
這個功能主要用於控制手機的底層方面操作,設計底層硬件操作將主要由各個手機硬件生產廠商來定製,支持不同設備的操作管理,如藍牙 (Bluetooth) 以及 WIFI 無線網絡支持等。