Android的系統(tǒng)架構(gòu)

在深入Android開發(fā)之前,我們有必要去詳細(xì)了解下Android的系統(tǒng)架構(gòu)故黑,通過對Android架構(gòu)的剖析叔磷,能夠更清楚地理解Android編程的邏輯和方法,從而對Android開發(fā)有一個(gè)全局的掌控铐料。

Android的系統(tǒng)架構(gòu)

這張圖是Google官方給出的架構(gòu)圖,想必大多數(shù)開發(fā)者都很熟悉吧。
從圖中可以看出钠惩,Android大致可以分為四層架構(gòu)柒凉、五塊區(qū)域。下面我們就從底層開始篓跛,逐層剖析膝捞。

1. Linux內(nèi)核層(LINUX KERNEL)

Android系統(tǒng)是基于Linux內(nèi)核, 借助Linux內(nèi)核服務(wù)實(shí)現(xiàn)硬件設(shè)備驅(qū)動(dòng)愧沟,進(jìn)程和內(nèi)存管理蔬咬,網(wǎng)絡(luò)協(xié)議棧,電源管理沐寺,無線通信等核心功能林艘。
- Android4.0版本之前基于Linux2.6系列內(nèi)核,4.0及之后的版本使用更新的Linux3.X內(nèi)核混坞,并且兩個(gè)開源項(xiàng)目開始有了互通狐援。
Linux3.4增添了電源管理等更多功能,以增加與Android的硬件兼容性究孕,使Android在更多設(shè)備上得到支持∩督矗現(xiàn)在android6.0仍然繼續(xù)延用著linux3.4.0,而linux最新的版本已經(jīng)到了4.3系列厨诸,那么為什么android沒有繼續(xù)去更新Linux kernel的版本也是一個(gè)值得以后慢慢探討的課題镶殷。
Linux內(nèi)核層同時(shí)也是硬件和軟件棧之間的抽象層,為Android設(shè)備的各種硬件提供了底層的驅(qū)動(dòng)微酬,如

  • 顯示驅(qū)動(dòng)(Display Driver)批钠、照相機(jī)驅(qū)動(dòng)(Camera Driver)、藍(lán)牙驅(qū)動(dòng)(Bluetooth Driver)得封、閃存驅(qū)動(dòng)(Flash Memeory Driver)埋心、進(jìn)程間通信驅(qū)動(dòng)(IPC Driver)
  • USB驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)(Keypad Driver)忙上、WiFi驅(qū)動(dòng)拷呆、音頻驅(qū)動(dòng)(Audio Drivers)、電源管理(Power Management)

2. 系統(tǒng)運(yùn)行庫層(LIBRARIES)

在Google官方的系統(tǒng)架構(gòu)圖中疫粥,位于Linux內(nèi)核層之上的系統(tǒng)運(yùn)行庫層是應(yīng)用程序框架的支撐茬斧,為Android系統(tǒng)中的各個(gè)組件提供服務(wù)。系統(tǒng)運(yùn)行庫層由Android的系統(tǒng)類庫和運(yùn)行時(shí)庫構(gòu)成梗逮。

  • 系統(tǒng)類庫
    系統(tǒng)類庫大部分由C/C++編寫项秉,所提供的功能通過Android應(yīng)用程序框架為開發(fā)者所使用,主要的系統(tǒng)類庫及說明如下慷彤。
  1. Surface Manager:界面管理庫娄蔼,執(zhí)行多個(gè)應(yīng)用程序時(shí)怖喻,管理子系統(tǒng)的顯示,另外也對2D和3D圖形提供支持岁诉。
  2. Media Framework:多媒體框架庫锚沸,支持多種常用的音頻和視頻格式的播放、錄制和回放涕癣,所支持的編碼格式包括MPEG4哗蜈,MP3,H264坠韩,AAC距潘,ARM,還能處理靜態(tài)圖片文件只搁。
  3. SQLite:本地小型關(guān)系數(shù)據(jù)庫音比,Android提供了一些新的SQLite數(shù)據(jù)庫API,以替代傳統(tǒng)的耗費(fèi)資源的JDBC API须蜗。
  4. OpenGL|ES:基于OpenGL ES 1.0API標(biāo)準(zhǔn)實(shí)現(xiàn)的3D跨平臺(tái)圖形庫,提供了3D繪圖的支持目溉。
  5. FreeType:用于顯示位圖和矢量字體明肮。
  6. Webkit:Web瀏覽器的軟件引擎,提供了瀏覽器內(nèi)核的支持缭付。
  7. SGL:底層的2D圖形引擎柿估。
  8. SSL:安全套接層,是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議陷猫。
  9. libc:函數(shù)庫秫舌,繼承自BSD的C函數(shù)庫bionic libc,更適合基于嵌入式Linux的移動(dòng)設(shè)備绣檬。

除上述列舉的主要系統(tǒng)類庫之外足陨,Android NDKNative Development Kit),即Android原生庫娇未,也十分重要墨缘。
NDK為開發(fā)者提供了直接使用Android系統(tǒng)資源,并采用C或C++語言編寫程序的接口零抬。因此镊讼,第三方應(yīng)用程序可以不依賴于Dalvik虛擬機(jī)進(jìn)行開發(fā)。實(shí)際上平夜,NDK提供了一系列從C或C++生成原生代碼所需要的工具蝶棋,為開發(fā)者快速開發(fā)C或C++的動(dòng)態(tài)庫提供方便,并能自動(dòng)將生成的動(dòng)態(tài)庫和Java應(yīng)用程序一起打包成應(yīng)用程序包文件忽妒,即.apk文件玩裙。
- 使用原生庫無法訪問應(yīng)用框架層API兼贸,兼容性可能無法保障。而且從安全性角度考慮献酗,Android原生庫用非類型安全的程序語言C,C++編寫寝受,更容易產(chǎn)生安全漏洞,原生庫的缺陷(bug)也可能更容易直接影響應(yīng)用程序的安全性罕偎。

  • 系統(tǒng)運(yùn)行時(shí)庫
    Android運(yùn)行時(shí)包含核心庫和Dalvik虛擬機(jī)兩部分很澄。

核心庫:允許開發(fā)者使用Java語言來編寫Android應(yīng)用,并提供Android的核心API颜及,如android.os甩苛,android.net,android.media等俏站。
Dalvik虛擬機(jī):基于apache的java虛擬機(jī)讯蒲,并被改進(jìn)以適應(yīng)低內(nèi)存,低處理器速度的移動(dòng)設(shè)備環(huán)境肄扎,是專門為移動(dòng)設(shè)備定制的墨林。Dalvik虛擬機(jī)依賴于Linux內(nèi)核,實(shí)現(xiàn)進(jìn)程隔離與線程調(diào)試管理犯祠,安全和異常管理旭等,垃圾回收等重要功能。

3. 應(yīng)用框架層(Application Framework)

這一層主要提供了構(gòu)建應(yīng)用程序時(shí)可能用到的各種API衡载,Android自帶的一些核心應(yīng)用就是使用這些API完成的搔耕,開發(fā)者可以通過使用這些API來快速構(gòu)建自己的應(yīng)用程序,同時(shí)也可以通過繼承實(shí)現(xiàn)個(gè)性化的擴(kuò)展痰娱。

  • Activity Manager 活動(dòng)管理器接口
    Window Manager 窗口管理器接口
    Content Providers 內(nèi)容提供者接口
    View System 視圖系統(tǒng)接口
    Notification Manager 通知管理器接口
  • Package Manager包管理器接口
    Telephony Manager 電話管理器接口
    Resource Manager 資源管理程序接口
    Location Manager 位置管理器接口
    XMPP Service 基于XMPP協(xié)議的即時(shí)通信接口

4. 應(yīng)用層(Applications)

所有安裝在手機(jī)上的應(yīng)用程序都屬于這一層弃榨,諸如SMS短信,電話撥號(hào)梨睁,圖片瀏覽器鲸睛,日歷,游戲坡贺,地圖腊凶,web瀏覽器等程序,以及開發(fā)人員自己開發(fā)的其他應(yīng)用程序拴念。

篇后語

終于將android的基本架構(gòu)進(jìn)行了一個(gè)系統(tǒng)的羅列和分析钧萍,從中我們不難發(fā)現(xiàn),平時(shí)開發(fā)中最常接觸是application層政鼠,一些application層應(yīng)用到的東西通過應(yīng)用框架層的引用一般都能在系統(tǒng)運(yùn)行庫層找到對應(yīng)的蹤跡风瘦,例如sqlite、webkit等公般,而如果想進(jìn)行Android底層開發(fā)万搔,那么Linux和C++知識(shí)則是必備的胡桨,至于想詳細(xì)了解底層到達(dá)application層的開發(fā)邏輯,則需要日后慢慢去做更深一層次的探究瞬雹。行文至此昧谊,Android的系統(tǒng)架構(gòu)應(yīng)該了然于心了吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酗捌,一起剝皮案震驚了整個(gè)濱河市呢诬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胖缤,老刑警劉巖尚镰,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哪廓,居然都是意外死亡狗唉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門涡真,熙熙樓的掌柜王于貴愁眉苦臉地迎上來分俯,“玉大人,你說我怎么就攤上這事哆料「准簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵剧劝,是天一觀的道長橄登。 經(jīng)常有香客問我抓歼,道長讥此,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任谣妻,我火速辦了婚禮萄喳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蹋半。我一直安慰自己他巨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布减江。 她就那樣靜靜地躺著染突,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辈灼。 梳的紋絲不亂的頭發(fā)上份企,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音巡莹,去河邊找鬼司志。 笑死甜紫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的骂远。 我是一名探鬼主播囚霸,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼激才!你這毒婦竟也來了拓型?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贸营,失蹤者是張志新(化名)和其女友劉穎吨述,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钞脂,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揣云,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冰啃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邓夕。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阎毅,靈堂內(nèi)的尸體忽然破棺而出焚刚,到底是詐尸還是另有隱情,我是刑警寧澤扇调,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布矿咕,位于F島的核電站,受9級特大地震影響狼钮,放射性物質(zhì)發(fā)生泄漏碳柱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一熬芜、第九天 我趴在偏房一處隱蔽的房頂上張望莲镣。 院中可真熱鬧,春花似錦涎拉、人聲如沸瑞侮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽半火。三九已至,卻和暖如春季俩,著一層夾襖步出監(jiān)牢的瞬間钮糖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工种玛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藐鹤,地道東北人瓤檐。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像娱节,于是被迫代替她去往敵國和親挠蛉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,152評論 25 707
  • 今天看筆試題的時(shí)候肄满,遇到了關(guān)于Android架構(gòu)的問題谴古,之前看筆試題的時(shí)候也去了解過,只是沒有做更詳細(xì)的筆記稠歉,于是...
    無爭公子__閱讀 658評論 0 2
  • 根據(jù)官方提供的系統(tǒng)架構(gòu)圖顯示掰担,Android系統(tǒng)架構(gòu)分為四層: Applications(應(yīng)用程序?qū)樱?Appli...
    Winston825閱讀 807評論 0 8
  • 文/輝皇20160408 感覺在何方,心頭溢清芬。 千言譜愛詩,萬語寫情文酌儒。 真情付流水,淑心壓黑云勺疼。 知己不...
    梅蘭竹菊668閱讀 230評論 0 0
  • 大多數(shù)表達(dá)能力不錯(cuò)的人执庐,對于咬文嚼字這種東西,所產(chǎn)生的愛好都是相通的导梆。 想起這個(gè)話題的最初是今天辭職了轨淌,在車站等公...
    小嬋姑娘閱讀 388評論 0 0