android系統結構和原始碼版本
Android的系統架構採用了分層架構的思想,如圖。從上層到底層共包括四層:
1.應用層
2.應用框架層
3.系統庫和Android虛擬機器
4.Linux核心

image.png
應用層
Android的應用程式主要是使用者介面(User Interface)方面的,通常以JAVA程式編寫,其中還可以包含各種資原始檔(放置在res目錄中)JAVA程式及相關資源經過編譯後,將生成一個APK包。
Android本身提供了主螢幕(Home),聯絡人(Contact),電話(Phone),瀏覽器(Browers)等眾多的核心應用。
同時應用程式的開發者還可以使用應用程式框架層的API實現自己的程式。
應用框架層
Android的應用程式框架為應用程式層的開發者提供APIs,它實際上是一個應用程式的框架。
系統庫和Android虛擬機器
該層分為兩部分:系統庫和android虛擬機器。
系統庫
主要為C/C++庫,這些庫能被Android系統中不同的元件使用。它們通過 Android 應用程式框架為開發者提供服務。
以下是一些核心庫:
- C庫 : 一個從 BSD 繼承來的標準 C 系統函式庫( libc ), 它是專門為基於 embedded linux 的裝置定製的。
- 媒體庫 : 基於 PacketVideo OpenCORE;該庫支援多種常用的音訊、視訊格式回放和錄製,同時支援靜態影象檔案。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
- SGL : 2D影象引擎。
- OpenGL ES : 該庫可以使用硬體 3D加速(如果可用)或者使用高度優化的3D軟加速。
- 介面管理工具(Surface Management : 對顯示子系統的管理,並且為多個應用程式提 供了2D和3D圖層的無縫融合。
- SQLite : 一個對於所有應用程式可用,功能強勁的輕型關係型資料庫引擎。
- LibWebCore : 一個最新的web瀏覽器引擎用,支援Android瀏覽器和一個可嵌入的web檢視。
- FreeType : 圖和向量字型的功能。
Android 的各種庫一般是以系統中介軟體的形式提供的,它們均有的一個顯著特點就是與移動裝置的平臺的應用密切相關。
Android 執行環境主要指的虛擬機器技術——Dalvik。Dalvik虛擬機器和一般JAVA虛擬機器(Java VM)不同,它執行的不是JAVA標準的位元組碼(bytecode )而是Dalvik可執行格式(.dex)中執行檔案。在執行的過程中,每一個應用程式即一個程序(Linux的一個Process)。 二者最大的區別在於Java VM是以基於棧的虛擬機器(Stack-based),而Dalvik是基於暫存器的虛擬機器(Register-based)。顯然,後者最大的好處在於可以根據硬體實現更大的優化,這更適合移動裝置的特點。
Linux核心
Android 的核心繫統服務依賴於 Linux 2.6 核心,如安全性,記憶體管理,程序管理, 網路協議棧和驅動模型。 Linux 核心也同時作為硬體和軟體棧之間的抽象層。
Android原始碼版本和代號
代號 | CodeName | 版本 | API級別 |
---|---|---|---|
餡餅 | Pie | 9 | API 級別 28 |
奧利奧 | Oreo | 8.1.0 | API 級別 27 |
奧利奧 | Oreo | 8.0.0 | API 級別 26 |
牛軋糖 | Nougat | 7.1 | API 級別 25 |
牛軋糖 | Nougat | 7.0 | API 級別 24 |
棉花糖 | Marshmallow | 6.0 | API 級別 23 |
棒棒糖 | Lollipop | 5.1 | API 級別 22 |
棒棒糖 | Lollipop | 5.0 | API 級別 21 |
奇巧 | KitKat | 4.4-4.4.4 | API 級別 19 |
果凍豆 | Jelly Bean | 4.3.x | API 級別 18 |
果凍豆 | Jelly Bean | 4.2.x | API 級別 17 |
果凍豆 | Jelly Bean | 4.1.x | API 級別 16 |
冰淇淋夾心 | Ice Cream Sandwich | 4.0.3-4.0.4 | API 級別 15,NDK 8 |
冰淇淋夾心 | Ice Cream Sandwich | 4.0.1-4.0.2 | API 級別 14,NDK 7 |
蜂窩 | Honeycomb | 3.2.x | API 級別 13 |
蜂窩 | Honeycomb | 3.1 | API 級別 12,NDK 6 |
蜂窩 | Honeycomb | 3.0 | API 級別 11 |
薑餅 | Gingerbread | 2.3.3-2.3.7 | API 級別 10 |
薑餅 | Gingerbread | 2.3-2.3.2 | API 級別 9,NDK 5 |
凍酸奶 | Froyo | 2.2.x | API 級別 8,NDK 4 |
鬆餅 | Eclair | 2.1 | API 級別 7,NDK 3 |
鬆餅 | Eclair | 2.0.1 | API 級別 6 |
鬆餅 | Eclair | 2.0 | API 級別 5 |
甜甜圈 | Donut | 1.6 | API 級別 4,NDK 2 |
紙杯蛋糕 | Cupcake | 1.5 | API 級別 3,NDK 1 |
(無代號) | (無代號) | 1.1 | API 級別 2 |
(無代號) | (無代號) | 1.0 | API 級別 1 |