一.Android的系統架構
1. 應用程序
同Android系統一起發佈的核心應用程序,如email 客戶端,SMS 短消息程序,日曆,地圖,瀏覽器,聯繫人管理程序等。 這些應用程序都是用java編寫的。
2. 應用程序框架
開發者可以用它開發應用,其中包括:
• 豐富而又可擴展的視圖(Views):可以用來構建應用程序, 它包括列表(lists),網格(grids), 文本框(text boxes),按鈕( buttons), 甚至可嵌入的web 瀏覽器。
• 內容提供器(Content Providers):使得應用程序可以訪問另一個應用程序的數據(如聯繫人數據庫), 或者共享它們自己的數據
• 資源管理器(Resource Manager):提供非代碼資源的訪問,如本地字符串,圖形,佈局文件( layoutfiles )
• 通知管理器(Notification Manager): 使得應用程序可以在狀態欄中顯示自定義的提示信息
• 活動管理器( Activity Manager):用來管理應用程序生命週期並提供常用的導航回退功能
當我們開發Android應用程序時,就是面向底層的應用程序框架進行的。從這個意義上來講,Android系統上的應用程序都是完全平等的,不管是Android系統提供的程序,還是普通開發者提供的程序,都是可以訪問Andorid提供個的API框架。
3. 類庫
一些C/C++核心庫,方便開發者進行應用的開發。一般而言,Android應用開發者不能直接調用這些類庫,但是可以通過應用程序框架來調用這些庫。
• 系統C 庫(libc):專門爲基於embedded linux的設備定製的
• 媒體庫:支持多種常用的音頻、視頻格式回放和錄製,同時支持靜態圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG
• SurfaceManager :對顯示子系統的管理,並且爲多個應用程序提供了2D和3D 圖層的無縫融合
• webkit/LibWebCore :Web 瀏覽引擎,支持Android 瀏覽器和一個可嵌入的web 視圖
• SGL:底層的2D圖形引擎
• 3D libraries : 基於OpenGL ES 1.0 APIs 實現的3D引擎
• FreeType :位圖(bitmap)和矢量(vector)字體顯示
• SQLite :輕型關係型數據庫引擎
4. Android 運行時環境
• Android 核心庫:提供了JAVA庫的大多數功能
• Dalvik 虛擬機:依賴於linux 內核的一些功能,比如線程機制和底層內存管理機制。同時虛擬機是基於寄存器的,Dalvik 採用簡練、高效的byte code 格式運行,它能夠在低資耗和沒有應用相互干擾的情況下並行執行多個應用,每一個Android 應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik 虛擬機實例。Dalvik 虛擬機中可執行文件爲.dex文件,該格式文件針對小內存使用做了優化。所有的類都經由JAVA 編譯器編譯,然後通過SDK中的"dx" 工具轉化成.dex 格式由虛擬機執行。
5. Linux 內核
Linux 內核作爲硬件和軟件棧之間的抽象層。Android 的核心繫統服務: 安全機制、內存管理、進程管理、網絡、硬件驅動