- 相關推薦
Android系統架構簡介
目前Android的Linux kernel控制包括安全、存儲器管理、進程管理、網絡堆疊、驅動程序模型等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。
應用程序
Android系統是基于Linux內核開發,使用Java作編程語言,使界面到功能,都有層出不窮的變化,其中Activity等同于J2ME的MIDlet,一個Activity類別負責創建視窗,一個活動中的Activity就是在foreground(前景)模式,背景執行的程序叫做Service。兩者之間透過由ServiceConnection和AIDL連結,達到復數程序同時執行的效果。如果執行中的Activity全部畫面被其他Activity取代時,該Activity便被停止,甚至被系統清除。
View等同于J2ME的Displayable,程序人員可以透過View類別與“XML layout”檔將UI放置在視窗上,并可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout。至于ViewGroup是各種layout的基礎抽象類別,ViewGroup之內還可以有ViewGroup。View的構造函數不需要在Activity中調用,但是Displayable的是必須的,在Activity中,要通過findViewById()來從XML中獲取View,Android的View類的顯示很大程度上是從XML中讀取的。View與事件息息相關,兩者之間透過Listener結合在一起,每一個View都可以注冊event listener,例如:當View要處理用戶觸碰的事件時,就要向Android框架注冊View.OnClickListener。另外還有Image等同于J2ME的BitMap。
中介軟件
操作系統與應用程序的溝通橋梁,并用分為兩層:函數層和虛擬機器。 Bionic是Android改良libc的版本。Android包含了Chrome瀏覽器引擎。Surface flinger是就2D或3D的內容顯示到螢幕上。Android使用工具鏈為Google自制的Bionic Libc。
Android采用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android使用Skia為核心圖形引擎,搭配OpenGL/ES。Skia與Linux Cairo功能相當,但相較于Linux Cairo,Skia功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,目前Skia也是Google Chrome的圖形引擎。
Android的多媒體資料庫采用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可透過ContentProvider類別獲取共用資料庫。
Android的中間層多以Java實現,4.4版之前使用特殊的Dalvik虛擬機器。Dalvik虛擬機器是一種“暫存器型態”的Java虛擬機器,變數皆存放于暫存器中,虛擬機器的指令相對減少。5.0版起改用Android Runtime(ART)。
Dalvik虛擬機器可以有多個實例,每個Android應用程序都用一個自屬的Dalvik虛擬機器來執行,讓系統在執行程序時可達到最優化。Dalvik虛擬機器并非執行Java字節碼,而是執行一種稱為.dex格式的檔案。
硬件抽像層(HAL)
Android的硬件抽像層是能以封閉源碼形式提供硬件驅動模塊。HAL的目的是為了把Android framework與Linux kernel隔開,讓Android不至過度依賴Linux kernel,以達成“內核獨立”(kernel independent)的概念,也讓Android framework的開發能在不考量驅動程序實現的前提下進行發展,以達到壟斷GPU市場的目的。
HAL stub是一種代理人的概念,stub是以*.so檔的形式存在。Stub向HAL“提供”操作函數,并由Android runtime向HAL獲取stub的操作,再回調這些操作函數。HAL里包含了許多的stub(代理人)。Runtime只要說明“類型”,即module ID,就可以獲取操作函數。
編程語言
Android是執行于Linux kernel之上,但并不是GNU/Linux。因為在一般GNU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNU GPL授權證所約束的部分,Android并沒有用戶層驅動(user space driver)這種東西。所有的驅動還是在內核空間中,并以HAL隔開版權問題。bionic/libc/kernel/ 并非標準的內核頭文件(kernel header files)。Android的內核頭文件是利用工具由Linux內核的頭文件所產生的,這樣做是為了保留常數、資料結構與宏。
Android的核心基于Linux,除了核心之外,則是中介層、數據庫元和用C/C++編寫的API以及應用程序框架。Android的應用程序通常以Java數據庫元為基礎編寫,運行程序時,應用程序的代碼會被即時轉變為Dalvik dex-code(Dalvik Executable),然后Android操作系統通過使用即時編譯的Dalvik虛擬機來將其運行。
【Android系統架構簡介】相關文章:
智慧健康系統架構09-01
秒殺系統架構分析09-22
什么是系統架構師-如何成為系統架構師08-10
linux系統集群的架構與實現09-11
如何搭建系統CSS架構09-26
標清視頻系統的架構09-12
Web系統架構的性能優化08-28
系統架構師概述10-13
什么是系統架構師08-01
SAP系統架構是什么10-25