> 。 應(yīng)用程序 Android 將會有一些核心的應(yīng)用,比如郵件客戶端、SMS程序、計算器、地圖、瀏覽器、聯(lián)系人等等。所有的應(yīng)用程序都用Java語言開發(fā)。 應(yīng)用層 通過提供一個開源的平臺,Android可以讓開發(fā)者自由的開發(fā)豐富、創(chuàng)新的應(yīng)用程序。開發(fā)者可以免費利用設(shè)備的硬件,訪問本地信息、啟動后臺服務(wù)、設(shè)置鬧鈴、給狀態(tài)欄增加提醒功能,等等灰常多的應(yīng)用。 開發(fā)人員通過核心應(yīng)用程序,可以完全訪問同一框架的APIs。(?)[開發(fā)者對于框架APIs的訪問有與核心程序同樣的權(quán)限(樓下whyou指正,表示感謝)]。結(jié)構(gòu)化的應(yīng)用框架為了提高組件的客服用性而設(shè)計。任何程序都可以公布他的功能讓其他程序來調(diào)用(在框架許可的前提下)。相同的機制允許用戶替換掉某些功能。 和所有程序相關(guān)的是一些服務(wù)和系統(tǒng),包括: 一些豐富的可擴展視圖:可以用來構(gòu)造應(yīng)用程序,包括列表、表格、輸入框、按鈕、可以寫內(nèi)置的瀏覽器。 內(nèi)容提供:可以讓程序訪問其他程序的數(shù)據(jù),例如聯(lián)系人列表,或者共享自己的數(shù)據(jù)。 資源管理器:提供訪問非代碼的資源的方法,例如本地化的一些字符串、圖像、布局文件。 一個提示管理器:可以讓程序在狀態(tài)欄顯示自定義的提示信息。 一個Activity管理器:管理activity的生命周期并且提供一個公共的導(dǎo)航功能。 更多詳細(xì)信息可以通過一個例子來學(xué)習(xí):參考 Noteoad Tutorial。 Libraries: Android包含了一些系統(tǒng)各個部分使用到的C/C++庫,通過Android應(yīng)用程序程序框架,這些功能對于開發(fā)者來說是公開的,部分核心庫如下: 系統(tǒng)C庫:一個繼承自BSD的標(biāo)準(zhǔn)C系統(tǒng)庫,專門為了嵌入式Linux設(shè)為。 多媒體庫:基于 PacketVideos OpenCORE庫,支持播放和錄制一些主流的音頻視頻格式,像靜態(tài)圖片文件,包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG格式。 Surface Manager(圖形管理器):管理顯示子系統(tǒng),在多個應(yīng)用程序里無縫綜合2D和3D圖層。 LibWebCore:一個流行的web瀏覽器引擎,供Android瀏覽器和內(nèi)置的瀏覽view使用。 SGL:一個底層的2D圖像引擎。 3D庫:基于OpenGL ES 1.0 的3D圖像引擎。包括硬件加速和優(yōu)化過的3D 軟件加速。 FreeType:位圖和矢量字體的渲染(rendering)。 SQLite:一個強大的輕量級的數(shù)據(jù)庫引擎對所有程序提供使用。 Android 運行時庫: Android包含了Java語言的大部分的核心庫。 每一個Android應(yīng)用程序運行在自己的線程里,有自己的dalvik虛擬機實例,Dalvik虛擬機被重寫用來支持在一個移動設(shè)備上支持多個虛擬機。Dalvik虛擬機執(zhí)行文件(.dex)被優(yōu)化的內(nèi)存占用很小。VM是基于寄存器,并且通過Java語言編譯器運行由class文件轉(zhuǎn)換的.dex文件,通過內(nèi)置的dx工具。 Dalvik虛擬機依賴Linux核心,來管理線程和底層的內(nèi)存管理。 Linux kernel: Android 依賴Linux2.6內(nèi)核作為核心系統(tǒng)服務(wù),像安全、內(nèi)存管理、進程管理、網(wǎng)絡(luò)堆、驅(qū)動模型。Kernel扮演者一個軟硬件之間的抽象層的角色。
|