1.1.2 Android的系統(tǒng)框架

Android框架概述:

Android的架構(gòu)是分層的杈湾,非常清晰矢门,分工很明確。Android本身是一套軟件堆疊(Software Stack)渐溶,或稱為"軟件疊層架構(gòu)"辉浦,疊層主要分成三層:操作系統(tǒng)、中間件茎辐、應(yīng)用程序

Android 軟件棧

1掂恕、Applications(應(yīng)用程序)

Android平臺(tái)不僅僅是操作系統(tǒng)拖陆,也包含了許多應(yīng)用程序,諸如SMS短信客戶端程序懊亡、電話撥號(hào)程序依啰、圖片瀏覽器、Web瀏覽器等應(yīng)用程序等等店枣。

這些平臺(tái)隨附的應(yīng)用與用戶可以選擇安裝的應(yīng)用一樣速警,沒有特殊狀態(tài),因此第三方應(yīng)用可成為用戶的默認(rèn)網(wǎng)絡(luò)瀏覽器鸯两、短信 Messenger 甚至默認(rèn)鍵盤(有一些例外闷旧,例如系統(tǒng)的“設(shè)置”應(yīng)用)。

但是毫無疑問的是:所有應(yīng)用程序都是用Java語言編寫的钧唐,并且這些應(yīng)用程序都是可以被開發(fā)人員開發(fā)的其他應(yīng)用程序所替換的忙灼,這點(diǎn)不同于傳統(tǒng)手機(jī)操作系統(tǒng)固化在系統(tǒng)內(nèi)部的系統(tǒng)軟件,Android應(yīng)用程序更加靈活和個(gè)性化钝侠。

2该园、Java APIFramework(應(yīng)用程序框架)

應(yīng)用程序框架層是我們從事Android開發(fā)的基礎(chǔ),很多核心應(yīng)用程序是通過這一層來實(shí)現(xiàn)其核心功能的帅韧,開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架里初。

該層簡(jiǎn)化了組件的重用,任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性)忽舟,這使得開發(fā)人員可以直接使用其提供的組件來進(jìn)行快速的應(yīng)用程序開發(fā)双妨,也可以通過繼承而實(shí)現(xiàn)個(gè)性化的拓展。

下面對(duì)各個(gè)模塊進(jìn)行解釋:

  • 內(nèi)容提供器(Content Providers):使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫)萧诫,或者共享它們自己的數(shù)據(jù)斥难。
  • 視圖管理系統(tǒng)(View System):可以用來構(gòu)建應(yīng)用程序的基本組件,包括列表Lists帘饶、文本框Text boxes哑诊、按鈕Buttons等等。
  • 活動(dòng)管理器(Activity Manager):用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能及刻。
  • 位置管理器(Location Manager):提供位置服務(wù)镀裤。
  • 包管理器(Package Manager) :用來管理 Android系統(tǒng)內(nèi)的程序竞阐。
  • 通知管理器(Notification Manager):使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。
  • 資源管理器(Resource Manager):提供非代碼資源的訪問暑劝,如本地字符串骆莹、圖形和布局文件。
  • 電話管理器(Telephony Manager):提供電話相關(guān)功能服務(wù)担猛。
  • 窗口管理器(Window Manager):用來管理所有的窗口程序幕垦。
  • XMPP服務(wù)(XMPP Service):提供Google Talk服務(wù)。

這些服務(wù)的解釋在初學(xué)者看來可能會(huì)非掣盗晦澀難懂先改,而且也不知道我在說些什么當(dāng)然也記不住我所說的,這再正常不過了蒸走,現(xiàn)在有個(gè)印象就好仇奶,等我們開發(fā)用到相關(guān)功能時(shí)就會(huì)豁然開朗啦~

3、Libraries(系統(tǒng)運(yùn)行庫)

與PC一樣比驻,每個(gè)Android應(yīng)用程序都有自己的進(jìn)程该溯,每個(gè)Android應(yīng)用程序都運(yùn)行在Dalvik虛擬機(jī)之上,Dalvik虛擬機(jī)只執(zhí)行.dex的可執(zhí)行文件别惦。

當(dāng)Android應(yīng)用程序通過編譯狈茉,最后還需要通過SDK中的dx工具轉(zhuǎn)化成.dex格式才能正常在虛擬機(jī)上執(zhí)行。所以說當(dāng)我們使用上面的Android應(yīng)用框架時(shí)步咪,Android系統(tǒng)會(huì)通過一些C/C++庫來支持我們使用的各個(gè)組件论皆,使其能更好地為我們服務(wù)。

當(dāng)然了猾漫,這里面還分為兩個(gè)部分:

  • 系統(tǒng)庫
    系統(tǒng)庫是應(yīng)用程序框架的支撐点晴,是連接應(yīng)用程序框架層與Linux內(nèi)核層的重要紐帶。
    • WebKit:一套網(wǎng)頁瀏覽器的軟件引擎悯周。
    • OpenMAX AL:一套嵌入式的多媒體應(yīng)用標(biāo)準(zhǔn)
    • Libc:從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫粒督,專門為基于embedded linux的設(shè)備定制。
    • Media Framework: 多媒體庫禽翼,基于PacketVideo OpenCore;支持多種常用的音頻屠橄、視頻格式錄制和回放,編碼格式包括MPEG4闰挡、MP3锐墙、H.264、AAC长酗、ARM溪北。
    • OpenGL|ES:根據(jù)OpenGL ES 1.0API標(biāo)準(zhǔn)實(shí)現(xiàn)的3D繪圖函數(shù)庫。
    • Surface Manager:執(zhí)行多個(gè)應(yīng)用程序時(shí)候,負(fù)責(zé)管理顯示與存取操作間的互動(dòng)之拨,另外也負(fù)責(zé)2D繪圖與3D繪圖進(jìn)行顯示合成茉继。
    • SQLite:小型的關(guān)系型數(shù)據(jù)庫引擎。(我們以后會(huì)經(jīng)常和它打交道蚀乔,無論哪種類型APP的開發(fā)烁竭。)
    • FreeType:提供點(diǎn)陣字與向量字的描繪與顯示。
    • SGL:底層的2D圖形渲染引擎吉挣。
    • SSL:在Andorid上通信過程中實(shí)現(xiàn)握手派撕。
  • Android運(yùn)行時(shí)
    Android應(yīng)用程序時(shí)采用Java語言編寫,程序在Android運(yùn)行時(shí)中執(zhí)行听想,其運(yùn)行時(shí)分為核心庫和ART虛擬機(jī)兩部分腥刹。
    • ART虛擬機(jī):正如上文所說,每個(gè)Android應(yīng)用程序都有一個(gè)專有的進(jìn)程汉买,并且不是多個(gè)程序運(yùn)行在一個(gè)虛擬機(jī)中,而是每個(gè)Android程序都有一個(gè)ART虛擬機(jī)的實(shí)例佩脊,并在該實(shí)例中執(zhí)行蛙粘。
      相比于以前采用的Dalvik虛擬機(jī)(一種基于寄存器的Java虛擬機(jī),而不是傳統(tǒng)的基于棧的虛擬機(jī)威彰,并進(jìn)行了內(nèi)存資源使用的優(yōu)化出牧,這使得它在運(yùn)行速度上占有很大優(yōu)勢(shì)),ART是安裝的時(shí)候就將應(yīng)用程序編譯好了歇盼,所以在執(zhí)行的時(shí)候直接就可以運(yùn)行的舔痕,這就使得應(yīng)用的安裝雖然慢一些,但開啟和運(yùn)行應(yīng)用的速度要快很多豹缀。
    • 核心庫:核心庫提供了Java語言API中的大多數(shù)功能伯复,同時(shí)也包含了Android的一些核心API,如:android.os邢笙、android.net啸如、android.media等等。

4氮惯、HAL(硬件抽象層)

硬件抽象層提供標(biāo)準(zhǔn)界面叮雳,向更高級(jí)別的 Java API 框架顯示設(shè)備硬件功能。

HAL 包含多個(gè)庫模塊妇汗,其中每個(gè)模塊都為特定類型的硬件組件實(shí)現(xiàn)一個(gè)界面帘不,例如相機(jī)或藍(lán)牙模塊。當(dāng)框架 API 要求訪問設(shè)備硬件時(shí)杨箭,Android 系統(tǒng)將為該硬件組件加載庫模塊寞焙。

5、Linux Kernel(Linux內(nèi)核)

Android是基于Linux內(nèi)核提供核心系統(tǒng)服務(wù)的,例如:安全棺弊、內(nèi)存管理晶密、進(jìn)程管理、網(wǎng)絡(luò)堆棧模她、驅(qū)動(dòng)模型等稻艰。

Linux Kernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)侈净。

如果你學(xué)過計(jì)算機(jī)網(wǎng)絡(luò)的話就會(huì)知道分層的好處:使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù)尊勿,屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層畜侦。

也就是說各層各司其職元扔,各層提供固定的功能服務(wù),專業(yè)點(diǎn)可以說是高內(nèi)聚旋膳、低耦合澎语。

當(dāng)然了,如果只是做應(yīng)用開發(fā)验懊,就不需要深入了解Linux Kernel層擅羞。

感謝優(yōu)秀的你跋山涉水看到了這里,不如關(guān)注下讓我們永遠(yuǎn)在一起义图!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末减俏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碱工,更是在濱河造成了極大的恐慌娃承,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕篷,死亡現(xiàn)場(chǎng)離奇詭異历筝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匙头,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門漫谷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹂析,你說我怎么就攤上這事舔示。” “怎么了电抚?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵惕稻,是天一觀的道長。 經(jīng)常有香客問我蝙叛,道長俺祠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蜘渣,結(jié)果婚禮上淌铐,老公的妹妹穿的比我還像新娘。我一直安慰自己蔫缸,他們只是感情好腿准,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拾碌,像睡著了一般吐葱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上校翔,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天弟跑,我揣著相機(jī)與錄音,去河邊找鬼防症。 笑死孟辑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔫敲。 我是一名探鬼主播扑浸,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼燕偶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起础嫡,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤指么,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后榴鼎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伯诬,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年巫财,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盗似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡平项,死狀恐怖赫舒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闽瓢,我是刑警寧澤接癌,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站扣讼,受9級(jí)特大地震影響缺猛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一荔燎、第九天 我趴在偏房一處隱蔽的房頂上張望耻姥。 院中可真熱鬧,春花似錦有咨、人聲如沸琐簇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸽嫂。三九已至,卻和暖如春征讲,著一層夾襖步出監(jiān)牢的瞬間据某,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國打工诗箍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留癣籽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓滤祖,卻偏偏與公主長得像筷狼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匠童,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

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

  • 前言: 身為一個(gè)測(cè)試埂材,還需要知道底層框架么?答案是肯定的汤求,這樣我們才能更加深入了解實(shí)現(xiàn)過程俏险,并準(zhǔn)確定位問題。 An...
    小喜_ww閱讀 1,807評(píng)論 0 4
  • 1扬绪、應(yīng)用程序. Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布竖独,該應(yīng)用程序包包括email客戶端,SMS短消息程序...
    juneway閱讀 486評(píng)論 0 0
  • 概述 Android基于Linux Kernel挤牛,但不是Linux莹痢,是Linux的一個(gè)變種; Android系統(tǒng)框...
    CodeMagic閱讀 376評(píng)論 0 0
  • Android系統(tǒng)架構(gòu) android系統(tǒng)架構(gòu)從上到下分為五層:應(yīng)用層墓赴、應(yīng)用框架層竞膳、系統(tǒng)運(yùn)行庫層、硬件抽象層竣蹦、Li...
    isLJli閱讀 5,475評(píng)論 0 9
  • 什么是安卓系統(tǒng) 安卓系統(tǒng)框架 安卓系統(tǒng)結(jié)構(gòu) 應(yīng)用組件 安卓系統(tǒng)歷史版本 補(bǔ)充說明 什么是安卓系統(tǒng) Android是...
    TensorFlow開發(fā)者閱讀 2,992評(píng)論 0 4