Android 技術(shù)專題系列之一 -- Android 是什么
Android 是什么?
Android是一個完整的手機(jī)軟件平臺,包含底層的操作系統(tǒng)(Linux), 中間件以及一些關(guān)鍵應(yīng)用。 Android還提供了一個SDK 幫助開發(fā)者使用Java語言來開發(fā)。
特性
下圖給出了Android平臺的主要組成元素(參見http://code.google.com/android/images/system-architecture.jpg)
應(yīng)用
Android平臺預(yù)裝了一些核心手機(jī)應(yīng)用,包括電子郵件,短信,日歷,地圖,瀏覽器,地址本等等。這些應(yīng)用都是使用Java語言編寫。開發(fā)者也需要使用Java語言在Android平臺上開發(fā)自己的應(yīng)用程序。
應(yīng)用框架
核心應(yīng)用(電子郵件,短信等)所使用的任何API, Android開發(fā)者都可以訪問。Android架構(gòu)設(shè)計的一個重要考慮是使組件(component)易于復(fù)用:任意一個應(yīng)用都可以向系統(tǒng)發(fā)布功能,而任意一個其他應(yīng)用都可以調(diào)用這些功能(在不違背系統(tǒng)安全策略前提下)。這個機(jī)制還使任意組件(component)都可被開發(fā)者替換。
在應(yīng)用之下是一組服務(wù) (service)和功能庫, 包括:
Android平臺包含一套C/C++庫,供上層的組件使用。開發(fā)者不能直接訪問這些庫,但是可以通過Android應(yīng)用框架來訪問。下面列出了一些核心庫:
Android 包含一套核心庫,提供了Java核心庫的大多數(shù)功能。
每個Android應(yīng)用運行在自己的進(jìn)程空間中, 運行在一個單獨的Dalvik虛擬機(jī)實例上。Dalvik的設(shè)計能夠保證同一個設(shè)備上有效的運行多個虛擬機(jī)(實例)。Dalvik上運行的可執(zhí)行文件格式是DalvikExecutable (.dex)。這個格式文件占用較小內(nèi)存。VM是Register-based (?),運行的類由一個Java編譯器編譯生成,然后由"dx"工具轉(zhuǎn)化成.dex格式。
Dalvik虛擬機(jī)依賴Linux kernel 提供提供一些基礎(chǔ)功能,如線程,初級內(nèi)存管理等。
LinuxKernel
Android依賴Linux內(nèi)核2.6提供的一些核心功能,如安全機(jī)制,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型等。內(nèi)核還為硬件提供一個抽象層。
Android是一個完整的手機(jī)軟件平臺,包含底層的操作系統(tǒng)(Linux), 中間件以及一些關(guān)鍵應(yīng)用。 Android還提供了一個SDK 幫助開發(fā)者使用Java語言來開發(fā)。
特性
- 應(yīng)用框架:提供機(jī)制使組件(component)能夠被復(fù)用和替換
- Dalvik 虛擬機(jī):為移動設(shè)備專門進(jìn)行優(yōu)化
- 瀏覽器:基于Webkit引擎
- 優(yōu)化的圖形庫:基于一個定制的2D圖形庫; 3D圖形庫基于OpenGL ES 1.0草案(硬件加速功能可選)
- SQLite
- 媒體支持:包括常見的音頻,視頻和靜態(tài)圖像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
- GSM 庫(硬件相關(guān))
- Bluetooth, EDGE, 3G, 和 WIFi (硬件相關(guān))
- Camera, GPS, compass 和accelerometer (硬件相關(guān))
- 完善的開發(fā)環(huán)境, 包括一個模擬器,調(diào)試工具,內(nèi)存和性能分析工具以及Eclipse IDE插件
下圖給出了Android平臺的主要組成元素(參見http://code.google.com/android/images/system-architecture.jpg)
應(yīng)用
Android平臺預(yù)裝了一些核心手機(jī)應(yīng)用,包括電子郵件,短信,日歷,地圖,瀏覽器,地址本等等。這些應(yīng)用都是使用Java語言編寫。開發(fā)者也需要使用Java語言在Android平臺上開發(fā)自己的應(yīng)用程序。
應(yīng)用框架
核心應(yīng)用(電子郵件,短信等)所使用的任何API, Android開發(fā)者都可以訪問。Android架構(gòu)設(shè)計的一個重要考慮是使組件(component)易于復(fù)用:任意一個應(yīng)用都可以向系統(tǒng)發(fā)布功能,而任意一個其他應(yīng)用都可以調(diào)用這些功能(在不違背系統(tǒng)安全策略前提下)。這個機(jī)制還使任意組件(component)都可被開發(fā)者替換。
在應(yīng)用之下是一組服務(wù) (service)和功能庫, 包括:
- 一組豐富和易于擴(kuò)展的View(控件),用于構(gòu)建應(yīng)用的圖形用戶界面,包括list, grid, 文本框, 按鈕,甚至一個強(qiáng)大的web瀏覽器控件
- Content provider (內(nèi)容提供者),使一個應(yīng)用能夠訪問另外一個應(yīng)用的數(shù)據(jù)(如地址本),或者共享自己的數(shù)據(jù)給其他應(yīng)用使用。
- 資源管理器(Resource Manager), 提供接口訪問應(yīng)用的non-code (非代碼)資源,如本地化的字符串,圖片文件,布局文件等。
- Notification Manager (通知管理器):所有應(yīng)用都可以通過Notification Manager在狀態(tài)欄顯示定制化的Alert (通知)或狀態(tài)信息
- Activity Manager: 管理應(yīng)用的生命周期以及activity 窗口的后退機(jī)制。
Android平臺包含一套C/C++庫,供上層的組件使用。開發(fā)者不能直接訪問這些庫,但是可以通過Android應(yīng)用框架來訪問。下面列出了一些核心庫:
- 系統(tǒng)C語言庫 - 標(biāo)準(zhǔn)C系統(tǒng)庫(libc)的一個BSD-派生實現(xiàn),并為嵌入式設(shè)備進(jìn)行了優(yōu)化
- 媒體庫 - 急于PacketVideo的OpenCORE。這個庫支持許多音視頻格式以及靜態(tài)圖像的播放和錄音/像, 如MPEG4, H。264, MP3,AAC,AMR, JPG和PNG。
- Surface Manager - 管理對顯示子系統(tǒng)的訪問,并無縫的合成多個應(yīng)用的2D和3D圖層
- LibWebCore - 先進(jìn)的web瀏覽器引擎。 Android瀏覽器應(yīng)用以及web view (控件,可嵌入其他應(yīng)用)都是基于這個庫。
- SGL - 底層的2D圖形引擎
- 3D 庫 - 基于OpenGL ES 1.0 API的一個實現(xiàn)庫。如果硬件提供3D加速功能,這個庫會利用硬件這個功能,否則使用一個優(yōu)化的3D軟件庫
- Freetype - 位圖和矢量字體引擎
- SQLite - 輕量級的關(guān)系數(shù)據(jù)庫引擎。
Android 包含一套核心庫,提供了Java核心庫的大多數(shù)功能。
每個Android應(yīng)用運行在自己的進(jìn)程空間中, 運行在一個單獨的Dalvik虛擬機(jī)實例上。Dalvik的設(shè)計能夠保證同一個設(shè)備上有效的運行多個虛擬機(jī)(實例)。Dalvik上運行的可執(zhí)行文件格式是DalvikExecutable (.dex)。這個格式文件占用較小內(nèi)存。VM是Register-based (?),運行的類由一個Java編譯器編譯生成,然后由"dx"工具轉(zhuǎn)化成.dex格式。
Dalvik虛擬機(jī)依賴Linux kernel 提供提供一些基礎(chǔ)功能,如線程,初級內(nèi)存管理等。
LinuxKernel
Android依賴Linux內(nèi)核2.6提供的一些核心功能,如安全機(jī)制,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型等。內(nèi)核還為硬件提供一個抽象層。