框架簡(jiǎn)介(2)

image

Android采用了分層架構(gòu)借尿,從上圖的架構(gòu)圖中我們可以知道,Android劃分了四個(gè)層矛物,由高到低分別是應(yīng)用程序?qū)用K溃瑧?yīng)用程序框架層,運(yùn)行庫(kù)層履羞,Linux內(nèi)核層峦萎。其中藍(lán)色代表Java程序屡久,黃色代表Java虛擬機(jī),綠色代表C/C++編寫(xiě)的程序庫(kù)爱榔,紅色為內(nèi)核(內(nèi)核+驅(qū)動(dòng))被环。

1.應(yīng)用程序?qū)樱↗AVA應(yīng)用程序)

應(yīng)用程序?qū)影覀兂R?jiàn)的Android應(yīng)用程序,例如通訊錄详幽,聯(lián)系人筛欢,瀏覽器等。

2.應(yīng)用程序框架層(JAVA框架)

來(lái)自百度百科: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ò)展。Android應(yīng)用框架功能如下:

  • android.app:提供高層的程序模型和基本的運(yùn)行環(huán)境雳灾。
  • android.content:包含對(duì)各種設(shè)備上的數(shù)據(jù)進(jìn)行訪問(wèn)和發(fā)布漠酿。
  • android.database:通過(guò)內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫(kù)。
  • android.graphics:底層的圖形庫(kù)谎亩,包含畫(huà)布炒嘲、顏色過(guò)濾、點(diǎn)等匈庭。
  • android.location:定位和相關(guān)服務(wù)的類(lèi)夫凸。
  • android.media:提供一些類(lèi)管理多種音頻、視頻的媒體接口阱持。
  • android.net:提供幫助網(wǎng)絡(luò)訪問(wèn)的類(lèi)夭拌,超過(guò)通常的java.net.*接口。
  • android.os:提供了系統(tǒng)服務(wù)衷咽、消息傳輸和IPC機(jī)制鸽扁。
  • android.opengl:提供OpenGL的工具。
  • android.provider:提供訪問(wèn)Android內(nèi)容提供者的類(lèi)镶骗。
  • android.telephony:提供與撥打電話相關(guān)的API交互桶现。
  • android.view:提供基礎(chǔ)的用戶界面接口框架。
  • android.util:涉及工具性的方法鼎姊,例如時(shí)間日期的操作骡和。
  • android.webkit:默認(rèn)瀏覽器操作接口。
  • android.widget:包含各種UI元素(大部分是可見(jiàn)的)在應(yīng)用程序的布局中相寇。

3.運(yùn)行庫(kù)層(本地框架和JAVA運(yùn)行環(huán)境)

運(yùn)行庫(kù)層包括運(yùn)行庫(kù)(Libraries)和Android運(yùn)行時(shí)(Android Runtime):

3.1運(yùn)行庫(kù)(Libraries)

Android 包含一些C/C++庫(kù)慰于,這些庫(kù)能被Android系統(tǒng)中不同的組件使用。它們通過(guò) Android 應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)唤衫。以下是一些核心庫(kù):

  • Bionic系統(tǒng)C庫(kù):從 BSD 繼承來(lái)的標(biāo)準(zhǔn) C 系統(tǒng)函數(shù)庫(kù)(libc)东囚,它是專門(mén)為基于嵌入式linux 設(shè)備定制的。
  • 媒體庫(kù):基于PacketVideo OpenCORE战授;該庫(kù)支持多種常用的音頻页藻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件植兰。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG份帐。
  • Surface Manager:對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供了2D和3D圖層的無(wú)縫融合楣导。
  • Webkit,LibWebCore:最新的web瀏覽器引擎废境,支持Android瀏覽器和一個(gè)可嵌入的web視圖。鼎鼎大名的 Apple Safari背后的引擎就是Webkit筒繁。
  • SGL:底層的2D圖形引擎噩凹。
  • 3D libraries:基于OpenGL ES 1.0 APIs實(shí)現(xiàn);該庫(kù)可以使用硬件 3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速毡咏。
  • FreeType:位圖(bitmap)和矢量(vector)字體顯示驮宴。
  • SQLite:輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。
  • 還有部分就是硬件抽象層(HAL)呕缭。其實(shí)Android并非將所有的設(shè)備驅(qū)動(dòng)都放在linux內(nèi)核里面堵泽,而是實(shí)現(xiàn)在userspace空間,這么做的主要原因是GPL協(xié)議恢总,Linux是遵循該協(xié)議來(lái)發(fā)布的迎罗,也就意味著對(duì)linux內(nèi)核的任何修改,都必須發(fā)布其源代碼片仿。而現(xiàn)在這么做就可以避開(kāi)而無(wú)需發(fā)布其源代碼纹安,畢竟它是用來(lái)賺錢(qián)的。而在linux內(nèi)核中為這些userspace驅(qū)動(dòng)代碼開(kāi)一個(gè)后門(mén)砂豌,就可以讓的userspace驅(qū)動(dòng)直接控制硬件厢岂。而只需要公布這個(gè)后門(mén)代碼即可。一般情況下如果要將Android移植到其他硬件去運(yùn)行奸鸯,只需要實(shí)現(xiàn)這部分代碼即可咪笑。包括:顯示器驅(qū)動(dòng),聲音娄涩,相機(jī)窗怒,GPS,GSM等等
3.2Android運(yùn)行時(shí)(Android Runtime)

Android運(yùn)行時(shí)包括核心庫(kù)和Dalvik虛擬機(jī):

3.2.1核心庫(kù)

核心庫(kù)兼容了大多數(shù)Java語(yǔ)言所需要調(diào)用的功能函數(shù)(核心庫(kù)雖然實(shí)現(xiàn)了Java標(biāo)準(zhǔn)部分的大部分內(nèi)容,但也有部分API沒(méi)有被支持蓄拣,比如GUI系統(tǒng)的Swing等)扬虚。

3.2.2Dalvik虛擬機(jī)/ART虛擬機(jī)

Dalvik虛擬機(jī)是一種基于寄存器的Java虛擬機(jī),主要是完成對(duì)生命周期的管理球恤、堆棧的管理辜昵、線程的管理、安全和異常的管理以及垃圾回收等重要功能咽斧。每個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行堪置,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例躬存。Dalvik虛擬機(jī)執(zhí)行.dex文件(該格式文件針對(duì)小內(nèi)存使用做了優(yōu)化),所有的類(lèi)都經(jīng)由JAVA編譯器編譯舀锨,然后通過(guò)SDK中的"dx"工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行岭洲。
同時(shí)Dalvik虛擬機(jī)也依賴于linux內(nèi)核的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制坎匿。
Android Runtime(縮寫(xiě)為ART)盾剩,在2013年作為Android 4.4系統(tǒng)中的一項(xiàng)測(cè)試功能正式對(duì)外發(fā)布,在Android 5.0及后續(xù)Android版本中作為正式的運(yùn)行時(shí)庫(kù)取代了Dalvik替蔬。

4.Linux內(nèi)核層

Android的核心系統(tǒng)服務(wù)依賴于 Linux 2.6 內(nèi)核 告私,如安全性,內(nèi)存管理承桥,進(jìn)程管理驻粟,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。 Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層快毛。其外還對(duì)其做了部分修改格嗅,主要涉及兩部分修改:

4.1Binder (IPC)

提供有效的進(jìn)程間通信,雖然linux內(nèi)核本身已經(jīng)提供了這些功能唠帝,但Android系統(tǒng)很多服務(wù)都需要用到該功能屯掖,為了某種原因其實(shí)現(xiàn)了自己的一套(安全和效率)。

4.2.電源管理

主要是為了省電襟衰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贴铜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瀑晒,更是在濱河造成了極大的恐慌绍坝,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苔悦,死亡現(xiàn)場(chǎng)離奇詭異轩褐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)玖详,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)把介,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蟋座,你說(shuō)我怎么就攤上這事拗踢。” “怎么了向臀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵巢墅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)君纫,這世上最難降的妖魔是什么驯遇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蓄髓,結(jié)果婚禮上妹懒,老公的妹妹穿的比我還像新娘。我一直安慰自己双吆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布会前。 她就那樣靜靜地躺著好乐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓦宜。 梳的紋絲不亂的頭發(fā)上蔚万,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音临庇,去河邊找鬼反璃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛假夺,可吹牛的內(nèi)容都是我干的淮蜈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼已卷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼梧田!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起侧蘸,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤裁眯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后讳癌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體穿稳,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年晌坤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逢艘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泡仗,死狀恐怖埋虹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娩怎,我是刑警寧澤搔课,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響爬泥,放射性物質(zhì)發(fā)生泄漏柬讨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一袍啡、第九天 我趴在偏房一處隱蔽的房頂上張望踩官。 院中可真熱鬧,春花似錦境输、人聲如沸蔗牡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辩越。三九已至,卻和暖如春信粮,著一層夾襖步出監(jiān)牢的瞬間黔攒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工强缘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留督惰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓旅掂,卻偏偏與公主長(zhǎng)得像赏胚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辞友,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容