1. 程式人生 > >android系統架構詳解

android系統架構詳解

先放上一張android系統架構圖:


從上圖中可以看出,Android系統架構為四層結構,從上層到下層分別是:應用程式層、應用程式框架層、系統執行庫層以及Linux核心層,分別介紹如下:

1應用程式層

Android平臺的應用層上包括各類與使用者直接互動的應用程式,或由java語言編寫的運行於後臺的服務程式。例如,智慧手機上實現的常見基本功能 程式,諸如SMS簡訊,電話撥號,圖片瀏覽器,日曆,遊戲,地圖,web瀏覽器等程式,以及開發人員開發的其他應用程式。


2應用程式框架層

應用程式框架層是我們從事Android開發的基礎,很多核心應用程式也是通過這一層來實現其核心功能的,該層簡化了元件的重用,開發人員可以直接使用其提供的元件來進行快速的應用程式開發,也可以通過繼承而實現個性化的拓展。具體模組如下:

aActivity Manager(活動管理器)管理各個應用程式生命週期以及通常的導航回退功能

bWindow Manager(視窗管理器)管理所有的視窗程式

cContent Provider(內容提供器)使得不同應用程式之間存取或者分享資料

dView System(檢視系統)構建應用程式的基本元件

eNotificationManager(通告管理器)使得應用程式可以在狀態列中顯示自定義的提示資訊

f)Package Manager(包管理器)Android系統內的程式管理

gTelephonyManager(電話管理器)管理所有的移動裝置功能

hResource Manager(資源管理器)

提供應用程式使用的各種非程式碼資源,如本地化字串、圖片、佈局檔案、顏色檔案等

i)LocationManager(位置管理器)提供位置服務

j)XMPP Service(XMPP服務)提供GoogleTalk服務

3系統執行庫層

系統執行庫層是應用程式框架的支撐,是連線應用程式框架層與Linux核心層的重要紐帶,為Android系統中的各個元件提供服務。系統執行庫層由系統類庫和Android執行時構成。具體如下:

a系統庫

主要分為如下幾個:

Surface Manager:執行多個應用程式時候,負責管理顯示與存取操作間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。

Media Framework:多媒體庫,基於PacketVideo OpenCore;

支援多種常用的音訊、視訊格式錄製和回放,編碼格式包括MPEG4、MP3、H.264、AAC、ARM。

SQLite:小型的關係型資料庫引

OpenGL|ES:根據OpenGLES 1.0API標準實現的3D繪圖函式庫

FreeType:提供點陣字與向量字的描繪與顯示

WebKit:一套網頁瀏覽器的軟體引擎

SGL:底層的2D圖形渲染引擎

SSL:在Andorid上通訊過程中實現握手

Libc:從BSD繼承來的標準C系統函式庫,專門為基於embedded linux的裝置定製

b)Android執行時

Android應用程式時採用Java語言編寫,程式在Android執行時中執行,其執行時分為核心庫和Dalvik虛擬機器兩部分。如下:

核心庫:核心庫提供了Java語言API中的大多數功能,同時也包含了Android的一些核心API,如android.os、android.net、android.media等等。

Dalvik虛擬機器:Android程式不同於J2me程式,每個Android應用程式都有一個專有的程序,並且不是多個程式執行在一個虛擬機器中,而是每個Android程式都有一個Dalivik虛擬機器的例項,並在該例項中執行。Dalvik虛擬機器是一種基於暫存器的Java虛擬機器,而不是傳統的基於棧的虛擬機器,並進行了記憶體資源使用的優化 以及支援多個虛擬機器的特點。需要注意的是,不同於J2me,Android程式在虛擬機器中執行的並非編譯後的位元組碼,而是通過轉換工具dx將Java位元組碼轉成dex格 式的中間碼。(安卓在4.4中釋出了ART執行時)

4)Linux核心層

Android以Linux作業系統核心為基礎,藉助Linux核心服務實現硬體裝置驅動,程序和記憶體管理,網路協議棧,電源管理,無線通訊等核心功能。Android4.0版本之前基於Linux2.6系列核心,4.0及之後的版本使用更新的Linux3.X核心,並且兩個開源專案開始有了互通。Linux3.3核心中正式包括一些Android程式碼,可以直接引導進入Android。Linux3.4將會增添電源管理等更多功能,以增加與Android的硬體相容性,使Android在更多裝置上得到支援。

Android核心 對Linux核心進行了增強,增加了一些面向移動計算的特有功能。例如,低記憶體管理器LMK(Low Memory Keller),匿名共享記憶體(Ashmem),以及輕量級的程序間通訊Binder機制等。這些核心的增強使Android在繼承Linux核心安全機制的同時,進一步提升了記憶體管理,程序間通訊等方面的安全性。如下是Android核心的主要驅動模組:

Power Management:針對嵌入式裝置的,基於標準Linux電源管理系統的,輕量級的電源管理驅動

Low Memory Keller:可以根據需要殺死程序來釋放需要的記憶體。擴充套件了Linux的OOM機制,形成獨特的LMK機制

Ashmem:為程序之間提供共享記憶體資源,同時為核心提供回收和管理記憶體的機制

Android Logger:一個輕量級的日誌裝置

Anroid Alarm:提供了一個定時器用於把裝置從睡眠狀態喚醒

Android  PMEM:DSP及其他裝置只能工作在連續的實體記憶體上,PMEM用於向用戶空間提供 連續的實體記憶體區域對映

Android Timed device:可以執行對裝置的定時控制功能 

Yaffs2檔案系統:Android採用大容量的NAND快閃記憶體作為儲存裝置,使用Yaffs2作為檔案系統管理大容量MTD NAND Flash;Yaffs2佔用記憶體小,垃圾回收簡潔迅速。

Android Paranoid網路 :對Linux核心的網路程式碼進行了改動,增加了網路認證機制。可在IPV4,IPV6和藍芽中設定,由ANDROID_PARANOID_NETWORK巨集來啟用此特性。