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