Android系統架構師安卓系統的體系機構,Android的系統架構和其他操作系統一樣,采用了分層的架構,共分為4層,從高到低分別是Android應用層,Android應用架構層,Android系統運行層和Linux內核層。
1. 應用程序
頂層中有所有的Android應用程序,包括通訊錄、瀏覽器等,你寫的應用程序也被安裝在這層;所有的的應用程序都是使用Java語言編寫的。
2. 應用框架層
這一層主要提供構建應用程序是可能用到的各種API,Android自帶的一些核心應用就是使用這些API完成的,開發者也可以通過使用API來構建自己的應用程序
活動管理者(Activity Manager):控制應用程序生命周期和活動棧的所有方面
內容提供器(Content Providers):允許程序之間發布和分享數據。
資源管理器(Resource Manager):提供對非代碼嵌入資源的訪問,如字符串、顏色設置和用戶界面布局。
通知管理器(Notification Manager):允許應用程序顯示對話框或者通知給用戶
視圖系統(View System):一個可拓展的視圖集合,用於創建應用程序用戶界面
3. 系統運行庫層
1) 程序庫
Android包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。他們通過Android應用程序框架為開發者提供服務,以下是一些核心庫:
*系統C庫(libc):一個從BSD繼承來的標准C系統函數庫,他是專門為基於embedded linux的設備定制的媒體庫(Media Framework):基於Packet Video opencore; 該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態圖像文件。編碼格式包括 MPEG4。H264、MP3、AAC、AMR、JPG、PNG。
* Surface Manager:對顯示子系統的管理,並且為多個應用程序提供了2D和3D圖層的無縫融合。
* SGL:底層的2D圖形引擎
*3D libraries:基於OpenFLES1.0 APLs實現,該庫可以使用硬件3D加速或者使用高度優化3D軟加速。
*FreeType:位圖(bitmap)和矢量(vector)字體顯示
*SQLite:一個對於所有應用程序可用,功能強勁的輕型關系型數據庫引擎。
2) Android運行庫
Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能。
每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik被設計成一個設備可以同時高效地運行多個虛擬系統。Dalvik虛擬機執行(.dex)的Dalvik可執行文件,該個稅文件針對小內存使用做了優化。同時虛擬機是基於寄存器的,所有的類都經由java編譯器編譯,然后通過SDK中的”dx”工具轉化成 .dex格式由虛擬機執行
Dalvik虛擬機依賴於linux內核的一些功能,比如線程機制和底層內存管理機制。
4. Linux內核層
Android系統基於Linux2.6內核,這一層為Android設備各種硬件提供了底層驅動,如顯示驅動,音頻驅動,照相機驅動,藍牙驅動,WIFI驅動,電源管理等
區別DVM與JVM
1. 首要差別
1Dalvik:基於寄存器,編譯和運行都會更快些
JVM:基於棧,編譯和運行都會慢一些
2. 字節碼的區別
Dalvik:執行.dex格式的字節碼,是對.class文件進行壓縮后產生的,文件變小
JVM:執行.class格式的字節碼
3. 運行環境的區別
Dalvik: 一個應用啟動都運行一個單獨的虛擬機運行在一個單獨的進程中
JVM:只能運行一個實例,也就是所有應用都運行在同一個JVM中