最近面試的時候旅赢,被問到了對Android系統(tǒng)有什么了解谷朝,于是花了一個下午的時間斜姥,研究了一下Android的體系結(jié)構(gòu)鸿竖,下面是我做的一點(diǎn)總結(jié),寫的不對的地方還請大神幫忙指正铸敏。
如圖所示缚忧,Android系統(tǒng)架構(gòu)一共包括四層,從上到下分別是應(yīng)用程序?qū)予颈省?yīng)用框架層闪水、系統(tǒng)運(yùn)行庫層(函數(shù)庫和Android運(yùn)行時)和Linux內(nèi)核層。
1蒙具、應(yīng)用程序?qū)?/p>
這是直接面向用戶的一層球榆,包含一系列的核心應(yīng)用程序,如電子郵件禁筏、短信持钉、聯(lián)系人等,也包括開發(fā)者自己的應(yīng)用程序篱昔。這些程序通常都是用java編寫的每强。(特殊情況下,也可以調(diào)用c/c++:安卓sdk和ndk都是什么州刽?有什么區(qū)別)
2空执、應(yīng)用框架層
包括了活動管理器、窗口管理器穗椅、內(nèi)容提供者辨绊、視圖系統(tǒng)、通知管理器房待、包管理器邢羔、電話管理器、資源管理器桑孩、位置管理器拜鹤、XMPP服務(wù)十個部分,也就是一個個的功能模塊流椒。這些功能模塊還是由java編寫的敏簿。只是其中一些java函數(shù)通過jni調(diào)用了運(yùn)行庫層的c/c++代碼。
3、系統(tǒng)運(yùn)行庫層
分為c/c++函數(shù)庫和Android運(yùn)行時(由Android核心庫集和虛擬機(jī)組成)惯裕。
一些核心函數(shù)庫:系統(tǒng)C庫温数、媒體庫、Surface Manage蜻势、LibWebCore撑刺、SGL、3D libraries握玛、FreeType够傍、SQLite。
4挠铲、Linux內(nèi)核
Android系統(tǒng)建立在Linux2.6之上冕屯。Linux內(nèi)核提供了安全性、內(nèi)存管理拂苹、進(jìn)程管理安聘、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型等核心系統(tǒng)服務(wù)。同時Linux內(nèi)核也是系統(tǒng)硬件與軟件疊層之間的抽象層(HAL)瓢棒。
總結(jié)
這就是Android四層架構(gòu)浴韭,從架構(gòu)圖中我們可以發(fā)現(xiàn),上層依賴下層或底層提供的各種功能或服務(wù)音羞,它們之間相互獨(dú)立且分工明確囱桨,這種分層結(jié)構(gòu)保證了層與層之間的低耦合,當(dāng)下層的層內(nèi)或?qū)酉掳l(fā)生改變時嗅绰,上層應(yīng)用無需任何改變舍肠,開發(fā)者能專注于應(yīng)用層的開發(fā)。