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