Android系統架構圖及各層介紹
Android的系統架構採用了分層架構的思想,如圖1所示。從上層到底層共包括四層,分別是應用程式程式層、應用框架層、系統庫和Android執行時和Linux核心。
圖1:Android系統架構圖
每層功能簡要介紹如下:
一 應用程式層
該層提供一些核心應用程式包,例如電子郵件、簡訊、日曆、地圖、瀏覽器和聯絡人管理等。同時,開發者可以利用Java語言設計和編寫屬於自己的應用程式,而這些程式與那些核心應用程式彼此平等、友好共處。
二 應用程式框架層
該層是Android應用開發的基礎,開發人員大部分情況是在和她打交道。應用程式框架層包括活動管理器、視窗管理器、內容提供者、檢視系統、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務十個部分。
在Android平臺上,開發人員可以完全訪問核心應用程式所使用的API框架。並且,任何一個應用程式都可以釋出自身的功能模組,而其他應用程式則可以使用這些已釋出的功能模組。基於這樣的重用機制,使用者就可以方便地替換平臺本身的各種應用程式元件。
XMPP((Extensible Messaging and Presence Protocol,前稱Jabber)是一種以XML為基礎的開放式實時通訊協議,XMPP網路是基於伺服器的(即客戶端之間彼此不直接交談),但是也是分散式的。不像AOL實時通或MSN Messenger等服務,XMPP沒有中央官方伺服器。Jabber.org的公眾伺服器上有大量的使用者,所以有些人誤解了,以為它是官方伺服器,不過事實上任何人都可以在自己的域名上執行XMPP伺服器。
Jabber識別符(JID)是使用者登入時所使用的賬號,看起來通常像一個電子郵件地址,如[email protected];前半部分為使用者名稱,後半部分為XMPP伺服器域名,兩個欄位以@符號區隔。
假設朱麗葉([email protected])想和羅密歐([email protected])通話,他們兩人的賬號分別在Capulet.com及Montague.net的伺服器上。當朱麗葉輸入資訊並按下發送鈕之後,一連串的事件就發生了:
- 朱麗葉的XMPP客戶端將她的資訊傳送到Capulet.com XMPP伺服器。
- Capulet.com XMPP伺服器開啟與Montague.net XMPP伺服器的連線。
- Montague.net XMPP伺服器將資訊寄送給羅密歐。如果他目前不在線上,那麼儲存資訊以待稍後寄送。
)
三 系統庫和Android執行時
系統庫包括九個子系統,分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android執行時包括核心庫和Dalvik虛擬機器,前者既相容了大多數Java語言所需要呼叫的功能函式,又包括了Android的核心庫,比如android.os、android.net、android.media等等。後者是一種基於暫存器的java虛擬機器,Dalvik虛擬機器主要是完成對生命週期的管理、堆疊的管理、執行緒的管理、安全和異常的管理以及垃圾回收等重要功能。
SQLite是遵守ACID的關係資料庫管理系統,它包含在一個相對小的C程式庫中;OpenGL-開放圖形庫(英語:Open Graphics Library,縮寫為 OpenGL)是個定義了一個跨程式語言、跨平臺的應用程式介面(API)的規範,它用於生成二維、三維影象。
四 Linux核心
Android核心系統服務依賴於Linux2.6核心,如安全性、記憶體管理、程序管理、網路協議棧和驅動模型。Linux核心也是作為硬體與軟體棧的抽象層。驅動:顯示驅動、攝像頭驅動、鍵盤驅動、WiFi驅動、Audio驅動、flash記憶體驅動、Binder(IPC)驅動、電源管理等。
總結:
1 Android的系統架構採用分層架構的思想,架構清晰,層次分明,協同工作。
2 Android的系統架構不僅從巨集觀上認識了Android系統,同時,也給我們的學習與實踐指明瞭方向。若是從事Android應用開發,那應該研究Android的應用框架層和應用程式層;若是從事Android系統開發,那應該研究Android的系統庫和Android執行時;若是從事Android驅動開發,那應該研究Android的Linux核心。總之,找準切入點,實踐出真知。
一.android系統架構圖及各層介紹
1. 應用層:應用是用java語言編寫的執行在虛擬機器上的程式,比如Email客戶端,SMS短訊息程式,日曆等。
2. 應用框架層:這一層是編寫Google釋出的核心應用時所使用的API框架,開發人員同樣可以使用這些框架來開發自己的應用,這樣便簡化了程式開發的結構設計,但是必須要遵守其框架的開發原則。
3. 系統執行庫(C/C++庫以及Android執行庫)層:當使用Android應用框架時,Android系統會通過一些C/C++庫來支援我們使用的各個元件,使其更好的為我們服務,比如其中的SQLite(關係資料庫),Webkit(Web瀏覽器引擎)。
4. Linux核心層:Android的核心繫統服務給予Linux2.6核心,如安全性、記憶體管理、程序管理、網路協議棧和驅動模型等都依賴於該核心,比如Binder IPC(Internet Process Connection程序間通訊)驅動,android的一個特殊驅動程式,具有單獨的裝置節點,提供程序間通訊的功能。