分析Android系統(tǒng)的話(huà),有一些比較基礎(chǔ)的知識(shí)需要先掌握走敌,至少要達(dá)到透徹理解原理的程度吧碴倾,不然分析具體的模塊時(shí)肯定會(huì)比較吃力的,這也是為什么面試官喜歡問(wèn)一些基礎(chǔ)問(wèn)題的原因吧悔常,我這里所指的基礎(chǔ)影斑,指的是Android各個(gè)子系統(tǒng)都可能涉及到的一些概念,屬于最基礎(chǔ)的一些東西机打。首先看一下Android系統(tǒng)的軟件架構(gòu)圖:
從這張圖可以看出矫户,整個(gè)Android系統(tǒng)層次是非常分明的,從下到上依次為:
- Linux內(nèi)核層
眾所周知残邀,Android系統(tǒng)是一個(gè)基于Linux內(nèi)核的移動(dòng)端圖形化系統(tǒng)皆辽,Linux內(nèi)核提供了如內(nèi)存管理,進(jìn)程管理芥挣,文件系統(tǒng)驱闷,ipc機(jī)制,網(wǎng)絡(luò)協(xié)議棧和設(shè)備驅(qū)動(dòng)等通用功能空免,Android在通用Linux內(nèi)核的基礎(chǔ)上空另,增加了binder驅(qū)動(dòng)、電源管理蹋砚、匿名共享內(nèi)存等扼菠。 -
HAL層
這層是為了給上層業(yè)務(wù)模塊提供一個(gè)統(tǒng)一的硬件抽象層接口,適配不同的硬件模塊坝咐,屏蔽掉不同廠(chǎng)商硬件模塊的差異循榆,即使硬件模塊發(fā)生變化,也無(wú)需對(duì)業(yè)務(wù)模塊做改動(dòng)墨坚。這層包括了各個(gè)廠(chǎng)家實(shí)現(xiàn)的硬件抽象層模塊秧饮。 - native framework層
這層包括Android runtime,即Android虛擬機(jī)實(shí)現(xiàn),各種native層應(yīng)用程序和服務(wù)盗尸,各種系統(tǒng)服務(wù)柑船、應(yīng)用程序組件native層實(shí)現(xiàn),各種功能庫(kù)等振劳,該層也集成了大量通用開(kāi)源庫(kù)代碼椎组。 - java framework層
這層包括各種系統(tǒng)服務(wù)和應(yīng)用程序組件、控件等历恐。 - app層
這層就是各種各樣的app。
分析完軟件架構(gòu)专筷,那么到底有那些是比較基礎(chǔ)的呢弱贼?這里我先列出一部分:
- 通信方式
Android作為一個(gè)含有大量服務(wù)和應(yīng)用的系統(tǒng),肯定存在著進(jìn)程間/線(xiàn)程間通信的需求磷蛹,Android在通用Linux進(jìn)程間通信機(jī)制(比如socket)的基礎(chǔ)上又增加了binder機(jī)制和handler機(jī)制吮旅。 - jni
這屬于java基礎(chǔ)知識(shí)范疇了,Android系統(tǒng)中很多功能都跨越了java framework到native framework調(diào)用味咳,因此掌握也是jni是必須的庇勃。