此技術(shù)文檔主要是從基礎(chǔ)了解Android系統(tǒng)架構(gòu),便于對(duì)以后開(kāi)發(fā)形成一些基本應(yīng)用架構(gòu)。
Android的系統(tǒng)架構(gòu)采用了分層架構(gòu)的思想,如圖1所示。從上層到底層共包括四層,分別是應(yīng)用程序程序?qū)?、?yīng)用框架層、系統(tǒng)庫(kù)和Android運(yùn)行時(shí)和Linux內(nèi)核。
圖1:Android系統(tǒng)架構(gòu)圖
每層功能簡(jiǎn)要介紹如下:
一 應(yīng)用程序?qū)?/p>
該層提供一些核心應(yīng)用程序包,例如電子郵件、短信、日歷、地圖、瀏覽器和聯(lián)系人管理等。同時(shí),開(kāi)發(fā)者可以利用Java語(yǔ)言設(shè)計(jì)和編寫(xiě)屬于自己的應(yīng)用程序,而這些程序與那些核心應(yīng)用程序彼此平等、友好共處。
二 應(yīng)用程序框架層
該層是Android應(yīng)用開(kāi)發(fā)的基礎(chǔ),開(kāi)發(fā)人員大部分情況是在和她打交道。應(yīng)用程序框架層包括活動(dòng)管理器、窗口管理器、內(nèi)容提供者、視圖系統(tǒng)、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務(wù)十個(gè)部分。在Android平臺(tái)上,開(kāi)發(fā)人員可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。并且,任何一個(gè)應(yīng)用程序都可以發(fā)布自身的功能模塊,而其他應(yīng)用程序則可以使用這些已發(fā)布的功能模塊?;谶@樣的重用機(jī)制,用戶(hù)就可以方便地替換平臺(tái)本身的各種應(yīng)用程序組件。XMPP((Extensible Messaging and Presence Protocol,前稱(chēng)Jabber)是一種以XML為基礎(chǔ)的開(kāi)放式實(shí)時(shí)通信協(xié)議,XMPP網(wǎng)絡(luò)是基于服務(wù)器的(即客戶(hù)端之間彼此不直接交談),但是也是分散式的。不像AOL實(shí)時(shí)通或MSN Messenger等服務(wù),XMPP沒(méi)有中央官方服務(wù)器。Jabber.org的公眾服務(wù)器上有大量的用戶(hù),所以有些人誤解了,以為它是官方服務(wù)器,不過(guò)事實(shí)上任何人都可以在自己的域名上運(yùn)行XMPP服務(wù)器。
Jabber識(shí)別符(JID)是用戶(hù)登錄時(shí)所使用的賬號(hào),看起來(lái)通常像一個(gè)電子郵件地址,如someone@example.com;前半部分為用戶(hù)名,后半部分為XMPP服務(wù)器域名,兩個(gè)字段以@符號(hào)區(qū)隔。
假設(shè)朱麗葉(juliet@capulet.com)想和羅密歐(romeo@montague.net)通話,他們兩人的賬號(hào)分別在Capulet.com及Montague.net的服務(wù)器上。當(dāng)朱麗葉輸入信息并按下發(fā)送鈕之后,一連串的事件就發(fā)生了:
三 系統(tǒng)庫(kù)和Android運(yùn)行時(shí)
系統(tǒng)庫(kù)包括九個(gè)子系統(tǒng),分別是圖層管理、媒體庫(kù)、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android運(yùn)行時(shí)包括核心庫(kù)和Dalvik虛擬機(jī),前者既兼容了大多數(shù)Java語(yǔ)言所需要調(diào)用的功能函數(shù),又包括了Android的核心庫(kù),比如android.os、android.net、android.media等等。后者是一種基于寄存器的java虛擬機(jī),Dalvik虛擬機(jī)主要是完成對(duì)生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。--SQLite是遵守ACID的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C程序庫(kù)中;OpenGL-開(kāi)放圖形庫(kù)(英語(yǔ):Open Graphics Library,縮寫(xiě)為 OpenGL)是個(gè)定義了一個(gè)跨編程語(yǔ)言、跨平臺(tái)的應(yīng)用程序接口(API)的規(guī)范,它用于生成二維、三維圖像。
四 Linux內(nèi)核
Android核心系統(tǒng)服務(wù)依賴(lài)于Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也是作為硬件與軟件棧的抽象層。驅(qū)動(dòng):顯示驅(qū)動(dòng)、攝像頭驅(qū)動(dòng)、鍵盤(pán)驅(qū)動(dòng)、WiFi驅(qū)動(dòng)、Audio驅(qū)動(dòng)、flash內(nèi)存驅(qū)動(dòng)、Binder(IPC)驅(qū)動(dòng)、電源管理等。
總結(jié):
1 Android的系統(tǒng)架構(gòu)采用分層架構(gòu)的思想,架構(gòu)清晰,層次分明,協(xié)同工作。
2 Android的系統(tǒng)架構(gòu)不僅從宏觀上認(rèn)識(shí)了Android系統(tǒng),同時(shí),也給我們的學(xué)習(xí)與實(shí)踐指明了方向。若是從事Android應(yīng)用開(kāi)發(fā),那應(yīng)該研究Android的應(yīng)用框架層和應(yīng)用程序?qū)?;若是從事Android系統(tǒng)開(kāi)發(fā),那應(yīng)該研究Android的系統(tǒng)庫(kù)和Android運(yùn)行時(shí);若是從事Android驅(qū)動(dòng)開(kāi)發(fā),那應(yīng)該研究Android的Linux內(nèi)核。總之,找準(zhǔn)切入點(diǎn),實(shí)踐出真知。
一.a(chǎn)ndroid系統(tǒng)架構(gòu)圖及各層介紹
1. 應(yīng)用層:應(yīng)用是用java語(yǔ)言編寫(xiě)的運(yùn)行在虛擬機(jī)上的程序,比如Email客戶(hù)端,SMS短消息程序,日歷等。
2. 應(yīng)用框架層:這一層是編寫(xiě)Google發(fā)布的核心應(yīng)用時(shí)所使用的API框架,開(kāi)發(fā)人員同樣可以使用這些框架來(lái)開(kāi)發(fā)自己的應(yīng)用,這樣便簡(jiǎn)化了程序開(kāi)發(fā)的結(jié)構(gòu)設(shè)計(jì),但是必須要遵守其框架的開(kāi)發(fā)原則。
3. 系統(tǒng)運(yùn)行庫(kù)(C/C++庫(kù)以及Android運(yùn)行庫(kù))層:當(dāng)使用Android應(yīng)用框架時(shí),Android系統(tǒng)會(huì)通過(guò)一些C/C++庫(kù)來(lái)支持我們使用的各個(gè)組件,使其更好的為我們服務(wù),比如其中的SQLite(關(guān)系數(shù)據(jù)庫(kù)),Webkit(Web瀏覽器引擎)。
4. Linux內(nèi)核層:Android的核心系統(tǒng)服務(wù)給予Linux2.6內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型等都依賴(lài)于該內(nèi)核,比如Binder IPC(Internet Process Connection進(jìn)程間通信)驅(qū)動(dòng),android的一個(gè)特殊驅(qū)動(dòng)程序,具有單獨(dú)的設(shè)備節(jié)點(diǎn),提供進(jìn)程間通信的功能。
一.框架提供的功能
Android系統(tǒng)提供給應(yīng)用開(kāi)發(fā)者的本身就是一個(gè)框架,所有的應(yīng)用開(kāi)發(fā)都必須遵守這個(gè)框架的原則。我們?cè)陂_(kāi)發(fā)應(yīng)用時(shí)就是在這個(gè)框架上進(jìn)行擴(kuò)展,
聯(lián)系客服