1. 操作系統(tǒng)層(OS)——最底層
因為Android源于Linux梳虽,使用了Linux內(nèi) 核址芯,所以Android使用Linux 2.6作為操作系統(tǒng)窜觉。Linux 2.6是一種標準的技術(shù),Linux也是一個開放的操作系統(tǒng)旬陡。Android對操作系統(tǒng)的使用包括核心和驅(qū)動程序兩部分语婴,Android的Linux核心 為標準的Linux 2.6內(nèi)核驶睦,Android更多的是需要一些與移動設(shè)備相關(guān)的驅(qū)動程序匿醒。主要的驅(qū)動如下所示场航。
- 顯示驅(qū)動(Display Driver):常用基于Linux的幀緩沖(Frame Buffer)驅(qū)動青抛。
- Flash內(nèi)存驅(qū)動(Flash Memory Driver):是基于MTD的Flash驅(qū)動程序。
- 相機驅(qū)動(Camera Driver):常用基于Linux的v4l驅(qū)動适室。
- 音頻驅(qū)動(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture举瑰,高級Linux聲音體系)的驅(qū)動。
- WiFi驅(qū)動(Camera Driver):基于IEEE 802.11標準的驅(qū)動程序此迅。
- 鍵盤驅(qū)動(KeyBoard Driver):作為輸入設(shè)備的鍵盤驅(qū)動。
- 藍牙驅(qū)動(Bluetooth Driver):基于IEEE 802.15.1標準的無線傳輸技術(shù)忍些。
- Binder IPC驅(qū)動:Android中一個特殊的驅(qū)動程序坎怪,具有單獨的設(shè)備節(jié)點,提供進程間通信的功能搅窿。
- Power Management(能源管理):管理電池電量等信息。
2. 各種庫(Libraries)和Android 運行環(huán)境(RunTime)——中間層
本層次對應一般嵌入式系統(tǒng)闹司,相當于中間件層次沐飘。Android的本層次分成兩個部分游桩,一個是各種庫薪铜,另一個是Android 運行環(huán)境隔箍。本層的內(nèi)容大多是使用C和C++實現(xiàn)的。其中包含的各種庫如下所示蜒滩。
- C庫:C語言的標準庫奶稠,也是系統(tǒng)中一個最為底層的庫捡遍,C庫是通過Linux的系統(tǒng)調(diào)用來實現(xiàn)的。
- 多媒體框架(Media Frameword):這部分內(nèi)容是Android多媒體的核心部分辆飘,基于PacketVideo(即PV)的OpenCORE谓传。從功能上本庫一共分為兩 部分蜈项,一部分是音頻续挟、視頻的回放(PlayBack),另一部分則是音視頻的記錄(Recorder)跑芳。
- SGL:2D圖像引擎直颅。
- SSL:即Secure Socket Layer,位于TCP/IP協(xié)議與各種應用層協(xié)議之間功偿,為數(shù)據(jù)通信提供安全支持。
- OpenGL ES 1.0:提供了對3D的支持。
- 界面管理工具(Surface Management):提供了管理顯示子系統(tǒng)等功能投蝉。
- SQLite:一個通用的嵌入式數(shù)據(jù)庫。
- WebKit:網(wǎng)絡(luò)瀏覽器的核心关拒。
- FreeType:位圖和矢量字體的功能庸娱。
Android的各種庫一般是以系統(tǒng)中間件的形式提供的,它們都有的一個顯著特點是與移動設(shè)備的平臺的應用密切相關(guān)熟尉。
Android 運行環(huán)境主要指的是虛擬機技術(shù)——Dalvik。Dalvik虛擬機和一般Java虛擬機(Java VM)不同剧包,它執(zhí)行的不是Java標準的字節(jié)碼(Bytecode),而是Dalvik可執(zhí)行格式(.dex)中的執(zhí)行文件疆液。在執(zhí)行的過程中,每一個應用 程序即一個進程(Linux的一個Process)潘飘。二者最大的區(qū)別在于,Java VM是基于棧的虛擬機(Stack-based)卜录,而Dalvik是基于寄存器的虛擬機(Register-based)攀圈。顯然,后者最大的好處在于可以 根據(jù)硬件實現(xiàn)更大的優(yōu)化赘来,這更適合移動設(shè)備的特點。
3. 應用程序(Application)
Android的應用程序主要是用戶界面 (User Interface)方面的嗦篱,通常用Java語言編寫幌缝,其中還可以包含各種資源文件(放置在res目錄中)、Java程序及相關(guān)資源經(jīng)過編譯后涵卵,將生成一 個APK包。Android本身提供了主屏幕(Home)典鸡、聯(lián)系人(Contact)坏晦、電話(Phone)以及瀏覽器(Brower)等眾多的核心應用。同時應用程序的開發(fā)者還可以使用應用程序框架層的API實現(xiàn)自己的程序昆婿。這也是Android開源的巨大潛力的體現(xiàn)。
4. 應用程序框架(Application Framework)
Android 的應用程序框架為應用程序?qū)拥拈_發(fā)者提供了API睁冬,它實際上是一個應用程序的框架看疙。由于上層的應用程序是以Java構(gòu)建的搂蜓,因此本層次提供的首先包含了 UI程序中所需要的各種控件辽装,例如:Views(視圖組件)帮碰,其中又包括了List(列表)拾积、Grid(柵格)、Text Box(文本框)斯碌、Button(按鈕)等肛度,甚至一個嵌入式的Web瀏覽器。
一個基本的Android應用程序可以利用應用程序框架中的以下5個部分承耿。
- Activity(活動)
- Broadcast Intent Receiver(廣播意圖接收者)
- Service(服務(wù))
- Content Provider(內(nèi)容提供者)
- Intent and Intent Filter(意圖和意圖過濾器)