分析:
第一層:Linux操作系統和驅動(Linux kernel):由C語言實現。
Android核心系統服務依賴於Linux2.6內核,包括:安全性、內存管理、進程管理、網絡協議、驅動模型。Linux內核也作爲硬件和軟件棧之間的抽象層。
除了標準的Linux內核外,Android還增加了內核的驅動程序:Binder(IPC)驅動、顯示驅動、輸入設備驅動、音頻系統驅動、攝像頭驅動、WiFi驅動、藍牙驅動、電源管理。
第二層:本地框架和Java運行環境(LIBRARIES和 ANDROID RUNTIME)
本地框架是有C/C++實現。包含C/C++庫,被Android系統中不同組件使用,它們通過Android應用程序框架爲開發者進行服務。
系統C庫:(libc)從BSD繼承過來的標準的C系統函數庫,專門是爲基於嵌入式Linux的設備定製的庫。
多媒體庫:基於PackerVideo的OpenCore;該庫支持多種常用的音頻、視頻格式回放和錄製,支持多種媒體格式的編和解碼格式。
Suface Manager:顯示子系統管理器,並且爲多個應用程序提供2D和3D圖層的無縫融合。
LibWebCore:一個最新的Web瀏覽器引擎,支持Android瀏覽器,以及一個可嵌入式的Web視圖。
SGL:Skia圖形庫,底層的2D圖形引擎。
3D libraries:基於OpenGL ES1.0 API的實現;該庫可以使用硬件3D加速(如果可用),或者使用高度優化的3D軟加速。
FreeType:位圖(bitmap)和矢量(vector)字體顯示。
Android運行環境(ANDROID RUNTIME):提供了Java編程語言核心庫的大多數功能,由Dalvik Java虛擬機和基礎的Java類庫組成。
Dalvik是Android中使用的Java虛擬機,每個Android應用程序都在自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。
Dalvik被設計成一個可以同時高效運行多個虛擬機實例的虛擬系統。執行後綴名爲.dex的Dalvik可執行文件,該格式的文件
針對小內存使用做出了優化。同時虛擬機是基於寄存器的,所有的類都是有Java編譯器編譯,然後通過SDK中的“dx”工具
轉化爲.dex格式由虛擬機執行。
Dalvik虛擬機依賴於Linux內核的一些功能,比如線程機制和底層內存管理機制。
Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。Dalvik虛擬機設計成,在一個設備可以高效地運行多個虛擬機。Dalvik虛擬機可執行文件格式是.dex,dex格式是專爲Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。大多數虛擬機包括JVM都是基於棧的,而Dalvik虛擬機則是基於寄存器的。兩種架構各有優劣,一般而言,基於棧的機器需要更多指令,而基於寄存器的機器指令更大。dx 是一套工具,可以將 Java .class 轉換成 .dex 格式。一個dex文件通常會有多個.class。由於dex有時必須進行最佳化,會使文件大小增加1-4倍,以ODEX結尾。 Dalvik虛擬機依賴於Linux 內核提供基本功能,如線程和底層內存管理。
Android包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程序框架(application framework)暴露給開發者。下面列出一些核心庫:系統C庫——標準C系統庫(libc)的BSD衍生,調整爲基於嵌入式Linux設備媒體庫——基於PacketVideo的OpenCORE。這些庫支持播放和錄製許多流行的音頻和視頻格式,以及靜態圖像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG界面管理——管理訪問顯示子系統和無縫組合多個應用程序的二維和三維圖形層 LibWebCore——新式的Web瀏覽器引擎,驅動Android 瀏覽器和內嵌的web視圖SGL——基本的2D圖形引擎 3D庫——基於OpenGL ES 1.0 APIs的實現。庫使用硬件3D加速或包含高度優化的3D軟件光柵FreeType ——位圖和矢量字體渲染 SQLite ——所有應用程序都可以使用的強大而輕量級的關係數據庫引擎
第三層:Android應用框架(ANDROIDFRAMEWORK)
在Android系統中,開發人員也可以完全訪問核心應用程序所使用的API框架。
包含的框架入上圖(不在陳述)
第四層:Android應用程序(APPLICATIONS)
注意:Android應用程序都是有Java語言編寫的。用戶開發的Android應用程序和Android的核心應用程序是同一層次的,它們都是基於Android的系統API構建的。