1.Android 系統架構html
android分爲四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和linux核心層,以下圖所示:java
2.application應用程序層linux
該層提供一些核心應用程序包,例如電子郵件、短信、日曆、地圖、瀏覽器和聯繫人管理等。同時,開發者能夠利用Java語言設計和編寫屬於本身的應用程序,而這些程序與那些核心應用程序彼此平等、友好共處android
3.application framework應用程序框架層編程
該層是Android應用開發的基礎,提供API給寫application應用程序的人調用,經常使用到的類庫以下:瀏覽器
而四大組件又分爲:架構
4.Libraries系統庫app
系統庫大部分由C/C++編寫,提供的功能給Android應用程序框架來調用框架
5. Android runtime 運行庫jvm
包含了Core Library和Dalvik虛擬機.
Core Library: 提供JAVA編程語言核心庫的大多數功能
Dalvik虛擬機(dvm): 每一個Java程序都離不開Java虛擬機, Android系統也實現了本身的一個相似JVM可是更適合嵌入式平臺的虛擬機——Dalvik。Dalvik的功能等同於JVM,爲Android平臺上的Java代碼提供了運行環境.惟一不一樣的是dvm執行的是.dex文件,jvm執行的是.class文件.
過程: android程序編譯完以後生產.class文件,而後,dex工具會把.class文件處理成.dex文件,而後把資源文件和.dex文件等打包成.apk文件,以下圖所示:
dvm的優勢在於:基於寄存器存取,而非虛擬棧,能夠根據硬件實現最大的優化,比較適合移動設備。
5.1 android 4.4開始, DVM被替換
因爲DVM安裝後的APP是字節碼,因此每次打開APP的時候,都會去把字節碼翻譯爲機器碼,致使APP運行效率下降,用戶體驗不好.
因此在 Android 4.4開始,ART(Android Runtime)虛擬機發布,用來替換 Dalvik 虛擬機,Android 4.4 默認採用 DVM,但能夠選擇ART(以下圖所示)。在 Android 5.0 開始默認使用 ART,DVM 今後被淘汰,而且ART 支持 64 位併兼容 32 位 CPU,而DVM只支持32 位 CPU.
ART優勢:安裝應用程序時會進行一次 AOT(ahead of time compilation, 預編譯),將字節碼編譯成機器碼並存儲在本地,這樣APP每次運行時就不須要執行編譯了,APP運行效率大大提高,耗電量也會下降.
ART缺點: 應用程序的安裝時間變長,而且安裝後的存儲空間佔用多一些(存儲有機器碼的緣由)
6.linux內核
用來運行應用程序,幷包含各類驅動,嚮應用層提供調用。