什麼是Android?html
Android是一個移動設備的軟件包,它包括操做系統,中間件和主要的應用軟件。Android SDK 爲開始使用Java編程語言在Android平臺上開發應用程序提供了必要的工具和APIs。android
特色web
· 應用程序框架,使組件能夠重用和更換數據庫
· 爲移動設備優化的Dalvik虛擬機編程
· 基於開源的WebKit引擎的集成瀏覽器瀏覽器
· 優化的圖形由一個自定義的2D圖形庫提供;基於OpenGL ES 1.0規範(硬件加速可選)的3D圖形安全
· SQLite提供結構化數據存儲網絡
· 媒體支持常見的音頻,視頻和靜態圖像格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)架構
· GSM電話(依賴於硬件)app
· 藍牙,EDGE,3G和WiFi(依賴於硬件)
· 攝像頭,GPS,指南針,和加速度計(依賴於硬件)
· 豐富的開發環境包括設備模擬器,調試工具,內存和性能分析工具,和Eclipse IDE的插件
下圖顯示了Android操做系統的主要組成部分。每一個部分在下面都有詳細描述。
Android提供了一些主要的應用軟件,包括電子郵件客戶端,SMS程序,日曆,地圖,瀏覽器,聯繫人,和其餘。全部這些應用程序都是使用Java編程語言編寫的。
經過提供一個開放的開發平臺,開發人員可使用Android構建極爲豐富和創新的應用。開發者能夠自由的使用設備的硬件,訪問位置信息,運行後臺服務,設置鬧鐘,狀態欄添加通知,等不少,不少。
核心應用使用的框架APIs,開發者一樣能夠訪問所有這些框架APIs。應用程序體系結構被設計爲能夠簡化組件的重用,任何應用均可以公佈它的功能,同時任何其餘應用程序可使用這些功能(必須符合框架實施的安全約束)。這樣的機制容許用戶替換組件。
全部應用程序的基礎是一套服務和系統,包括:
· 可用來構建一個應用程序的豐富且可擴展的視圖集(View),包括列表,網格,文本框,按鈕,甚至一個可嵌入的web瀏覽器
· 內容提供商(Content Providers),使應用程序可以訪問來自其餘應用程序(如通信錄)的數據,或者共享本身的數據
· 一個資源管理器(Resource Manager),提供對非代碼的資源的訪問,例如本地化的字符串,圖形,和佈局文件
· 一個通知管理 (Notification Manager
)
,使全部的應用程序能夠在狀態欄上顯示自定義的提醒
· 活動管理(Activity Manager),管理應用程序的生命週期,並提供一個共同的導航堆棧
有關詳細信息和應用程序的演練,請參見「記事本「教程 。
Android包含了一套Android系統各個組件使用的C / C + +庫。這些功能經過Android應用框架暴露給開發者。下面列出了一些核心庫:
· 系統C庫(System C library) -一個標準C系統庫(libc)的BSD的實現,爲嵌入式的基於Linux設備作了調整。
· 媒體庫 -基於PacketVideo的OpenCORE;庫支持許多流行的音頻和視頻格式的播放和錄音,以及靜態圖像文件,包括MPEG4,H.264,支持MP3,AAC,AMR,JPG,PNG
· 表面管理器(Surface Manager) -管理多個應用程序的訪問顯示子系統和無縫複合材料的二維和三維圖形層。
· LibWebCore -一個現代的Web瀏覽器的引擎,它提供了Android瀏覽器和一個可嵌入的web視圖
· SGL -底層的2D圖形引擎
· 3D庫 -基於OpenGL ES 1.0 API的實現;庫可使用不管是硬件3D加速(若是可用)或所包含的,高度優化的3D軟件光柵
· FreeType -位圖和矢量字體渲染
· SQLite的 –爲全部應用程序提供的一個強大的和輕量級的關係數據庫引擎
Android包含一個核心庫集合,這個核心庫集合提供了大部分Java編程語言核心庫可用的功能。
每個Android應用程序運行在它本身的進程中,與本身的Dalvik虛擬機實例中。Dalvik被設計爲可使設備有效地運行多個虛擬機。Dalvik虛擬機執行Dalvik可執行格式(.DEX)的文件,這種格式是爲小內存優化過的。VM是基於寄存器的,並運行由Java語言的編譯器編譯,並使用內置的「dx」工具轉化成.dex格式的類。
Dalvik虛擬機的基礎功能依賴於Linux內核,例如線程和低水平內存管理。
Android 的核心繫統服務例如安全性,內存管理,進程管理,網絡協議棧,和驅動模型依賴於 Linux version 2.6 。 內核也做爲硬件和軟件堆棧的其他部分之間的一個抽象。