安卓是Google在Linux平臺上開發(fā)的一個開放源碼操作系統(tǒng)。其中包含了操作系統(tǒng)、用戶界面和應(yīng)用程序——手機上運行的所有軟件都是必需的,并且沒有任何以前阻礙手機行業(yè)創(chuàng)新的特殊障礙。安卓系統(tǒng)使用了WebKit瀏覽器引擎,擁有觸摸屏、高級圖形顯示和上網(wǎng)功能,用戶可以在手機上查看電子郵件,搜索網(wǎng)站,觀看視頻節(jié)目,等等;與iPhone等其他手機相比,安卓系統(tǒng)更加強調(diào)搜索功能,其界面更加強大,可以說是一個集成了所有Web應(yīng)用的單一平臺。下面是Android的系統(tǒng)架構(gòu)。
與操作系統(tǒng)一樣,android也是采用分層結(jié)構(gòu)的體系結(jié)構(gòu)。android在結(jié)構(gòu)上分為四層,由高層到低層分別為應(yīng)用層、應(yīng)用框架層、系統(tǒng)運行庫層和操作系統(tǒng)內(nèi)核層。
安卓和其他一些核心的軟件包一起發(fā)布,這些軟件包包括email客戶端、短信程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等等。使用JAVA語言編寫了所有應(yīng)用程序。
安卓的系統(tǒng)結(jié)構(gòu)
開發(fā)者還可以完全訪問核心應(yīng)用所使用的API框架。這個應(yīng)用程序的體系結(jié)構(gòu)設(shè)計簡化了組件的重用;任何一個應(yīng)用程序都可以發(fā)布功能塊,而其他任何應(yīng)用程序都可以使用它發(fā)布的功能塊(不會超過框架的安全限制)。類似地,應(yīng)用程序復(fù)用機制讓用戶能夠方便地替換程序組件。
每個應(yīng)用程序背后隱藏著一系列服務(wù)和系統(tǒng),包括;
*可用于構(gòu)建應(yīng)用程序的豐富和可擴展視圖(Views),包括列表(lists)、網(wǎng)格(grids)、文本框(textboxes)、按鈕(buttons),甚至是可嵌入web瀏覽器。
*ContentProviders(ContentProviders)允許應(yīng)用程序訪問其他應(yīng)用程序的數(shù)據(jù)(例如聯(lián)系人數(shù)據(jù)庫),或共享其自身的數(shù)據(jù)。
*ResourceManager(ResourceManager)用于訪問非代碼資源,例如本地字符串、圖形和布局文件(layoutfiles)。
公告管理器(NotificationManager)允許應(yīng)用程序?qū)⒍ㄖ频奶崾拘畔@示在狀態(tài)欄上。
ActivityManager(ActivityManager)用于管理應(yīng)用程序的生命周期,并提供常用的導(dǎo)航和返回功能。
要了解更多細節(jié)以及如何從頭編寫應(yīng)用程序,請參考如何編寫Android應(yīng)用程序。
1)程序庫
Andriod包含一些C/C++庫,它們可以為Andriod系統(tǒng)的不同組件所用。他們通過Android應(yīng)用框架來為開發(fā)者服務(wù)。有些核心庫如下:
SystemCustomer-從BSD繼承來的標準C系統(tǒng)函數(shù)庫(libc),它是專門為基于embeddedlinux的設(shè)備定制的。
*基于PacketVideoOpenCORE的介質(zhì)庫;該庫支持多種常用的音頻、視頻格式的播放和錄制,同時還支持靜態(tài)圖像文件。本發(fā)明采用MPEG4,H.264,MP3,AAC,AMR,JPG,PNG的編碼格式。
*SurfaceManager-顯示子系統(tǒng)的管理,提供了2D和3D圖層對多個應(yīng)用程序的無縫融合。
*LibWebCore-一款最新的web瀏覽器引擎,支持Android瀏覽器和嵌入式web視圖。
*SGL-底層的二維圖形引擎。
*3Dlibraries-基于OpenGLES1.0APIs實現(xiàn);這個庫可以使用(如果可用的話)硬件3D加速,或者高度優(yōu)化的3D軟加速。
*FreeType-位圖(bitmap)和向量(vector)字體顯示。
*SQLite-一種輕薄、關(guān)系數(shù)據(jù)庫引擎,可供所有應(yīng)用程序使用。
2)Android運行庫
安卓包含一個核心庫,它提供JAVA編程語言核心庫的大部分功能。
每個Android應(yīng)用程序都在其自己的進程中運行,并且都有Dalvik虛擬機的獨立實例。達維克被設(shè)計為一臺設(shè)備能夠同時有效地運行多個虛擬系統(tǒng)。dex的Dalvik可執(zhí)行文件,用于Dalvik虛擬機執(zhí)行(.dex),格式文件為小內(nèi)存使用做了優(yōu)化。與此同時,虛擬機是基于寄存器的,所有類都通過JAVA編譯器編譯,然后通過SDK中的"dx"工具轉(zhuǎn)換為.dex格式,由虛擬機執(zhí)行。
虛擬機Dalvik依賴于linux內(nèi)核的某些功能,如線程機制和底層內(nèi)存管理機制。
安卓的核心系統(tǒng)服務(wù)是基于Linux2.6內(nèi)核的,比如安全、內(nèi)存管理、進程管理、網(wǎng)絡(luò)協(xié)議棧以及驅(qū)動模式。在硬件和軟件棧之間,Linux內(nèi)核也是一個抽象層。