Android 是一個專門針對移動設備的軟件集,它包括一個操做系統,中間件和一些重要的應用程序。Beta版的 Android SDK 提供了在Android平臺上使用JaVa語言進行Android應用開發必須的工具和API接口。 linux
特性 web
應用程序框架 支持組件的重用與替換數據庫
Dalvik 虛擬機 專爲移動設備優化編程
集成的瀏覽器 基於開源的WebKit 引擎瀏覽器
優化的圖形庫 包括定製的2D圖形庫,3D圖形庫基於OpenGL ES 1.0 (硬件加速可選)安全
SQLite 用做結構化的數據存儲網絡
多媒體支持 包括常見的音頻、視頻和靜態圖像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)架構
GSM 電話技術 (依賴於硬件)框架
藍牙Bluetooth, EDGE, 3G, 和 WiFi (依賴於硬件)編程語言
照相機,GPS,指南針,和加速度計(accelerometer) (依賴於硬件)
豐富的開發環境 包括設備模擬器,調試工具,內存及性能分析圖表,和Eclipse集成開發環境插件
Android 架構
下圖顯示的是Android操做系統的主要組件。每一部分將會在下面具體描述。
應用程序
Android會同一系列核心應用程序包一塊兒發佈,該應用程序包包括email客戶端,SMS短消息程序,日曆,地圖,瀏覽器,聯繫人管理程序等。全部的應用程序都是使用JAVA語言編寫的。
應用程序框架
開發人員也能夠徹底訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序均可以發佈它的功能塊而且任何其 它的應用程序均可以使用其所發佈的功能塊(不過得遵循框架的安全性限制)。一樣,該應用程序重用機制也使用戶能夠方便的替換程序組件。
隱藏在每一個應用後面的是一系列的服務和系統, 其中包括;
豐富而又可擴展的視圖(Views),能夠用來構建應用程序, 它包括列表(lists),網格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web瀏覽器。
內容提供器(Content Providers)使得應用程序能夠訪問另外一個應用程序的數據(如聯繫人數據庫), 或者共享它們本身的數據
資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字符串,圖形,和佈局文件( layout files )。
通知管理器 (Notification Manager) 使得應用程序能夠在狀態欄中顯示自定義的提示信息。
活動管理器( Activity Manager) 用來管理應用程序生命週期並提供經常使用的導航回退功能。
有關更多的細節和怎樣從頭寫一個應用程序,請參考 如何編寫一個 Android 應用程序.
程序庫
Android 包含一些C/C++庫,這些庫能被Android系統中不一樣的組件使用。它們經過 Android 應用程序框架爲開發者提供服務。如下是一些核心庫:
系統 C 庫 - 一個從 BSD 繼承來的標準 C 系統函數庫( libc ), 它是專門爲基於 embedded linux 的設備定製的。
媒體庫 - 基於 PacketVideo OpenCORE;該庫支持多種經常使用的音頻、視頻格式回放和錄製,同時支持靜態圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
Surface Manager - 對顯示子系統的管理,而且爲多個應用程序提 供了2D和3D圖層的無縫融合。
LibWebCore - 一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖。
SGL - 底層的2D圖形引擎
3D libraries - 基於OpenGL ES 1.0 APIs實現;該庫可使用硬件 3D加速(若是可用)或者使用高度優化的3D軟加速。
FreeType -位圖(bitmap)和矢量(vector)字體顯示。
SQLite - 一個對於全部應用程序可用,功能強勁的輕型關係型數據庫引擎。
Android 運行庫
Android 包括了一個核心庫,該核心庫提供了JAVA編程語言核心庫的大多數功能。
每個Android應用程序都在它本身的進程中運行,都擁有一個獨立的Dalvik虛擬 機實例。Dalvik被設計成一個設備能夠同時高效地運行多個虛擬系統。 Dalvik虛擬機執行(.dex)的Dalvik可執行文件,該格式文件針對小內存使用作了 優化。同時虛擬機是基於寄存器的,全部的類都經由JAVA編譯器編譯,而後經過SDK中 的 "dx" 工具轉化成.dex格式由虛擬機執行。
Dalvik虛擬機依賴於linux內核的一些功能,好比線程機制和底層內存管理機制。
Linux 內核
Android 的核心繫統服務依賴於 Linux 2.6 內核,如安全性,內存管理,進程管理, 網絡協議棧和驅動模型。 Linux 內核也同時做爲硬件和軟件棧之間的抽象層。