什么是Android?
Android是一個移動設(shè)備的程序集合,包括的操作系統(tǒng)、中間件和關(guān)鍵的應(yīng)用程序。 Android SDK 提供了必要的工具和API,使用Java編程語言在Android平臺開發(fā)應(yīng)用程序。
特點
* 應(yīng)用程序框架* 使組件可以被重用和替換
* Dalvik虛擬機* 為移動設(shè)備優(yōu)化
* 集成的瀏覽器* 基于開源的WebKit引擎
* 基于優(yōu)化的圖形* 由一個自定義的2D圖形庫支持;3D圖形的OpenGL ES 1.0規(guī)范(可選硬件加速)
* SQLite* 結(jié)構(gòu)化的數(shù)據(jù)存儲
* 媒體支持* 常見的音頻、視頻和靜止圖像格式(MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF)
* GSM電話* (依賴于硬件)
* 藍牙、EDGE、3G和WiFi* (依賴于硬件)
* 攝像頭、GPS、指南針、和加速度計* (依賴于硬件)
* 豐富的開發(fā)環(huán)境* 包括設(shè)備模擬器、調(diào)試器、內(nèi)存和性能分析工具,以及一個Eclipse IDE的插件
Android架構(gòu)
下圖展示了Android操作系統(tǒng)的主要組成部分,每一部分在下面有更詳細地描述。
文件:Android framework.png
應(yīng)用程序
Android會附帶了一套核心應(yīng)用,包括電子郵件客戶端,短信程序,日歷,地圖,瀏覽器,聯(lián)系人等。所有應(yīng)用程序都使用Java編程語言編寫。
應(yīng)用框架
Android通過一個開放的開發(fā)平臺,給開發(fā)人員在創(chuàng)建極為豐富創(chuàng)新性的應(yīng)用程序上提供了有力的支持。開發(fā)者可以自由設(shè)定設(shè)備的硬件場景、接入位置信息、運行后臺服務(wù)、設(shè)置鬧鐘、添加狀態(tài)欄通知和更多的在其他優(yōu)勢方面上。
開發(fā)者擁有使用相同的框架API訪問核心應(yīng)用程序的全部權(quán)利。應(yīng)用程序架構(gòu)旨在簡化組件的重用,任何應(yīng)用都可以發(fā)布它的功能,之后任何其他應(yīng)用程序都能使用這些功能(受強制執(zhí)行的安全框架約束)。該機制允許用戶更換組件。
在所有應(yīng)用程序的背后都是使用一套服務(wù)和系統(tǒng),包括:
* 豐富的 視圖和擴展,可以用來構(gòu)建應(yīng)用程序,包括列表、網(wǎng)格、文本框、按鈕、甚至內(nèi)嵌的網(wǎng)頁瀏覽器
* 內(nèi)容提供者(Content Providers),使應(yīng)用程序能夠訪問其他應(yīng)用程序的數(shù)據(jù)(如通訊錄)或共享自己的數(shù)據(jù)
* 資源管理器(Resource Manager),提供非代碼資源的訪問,如本地化的字符串、圖形、和布局文件
* 通知管理器(Notification Manager),使所有的應(yīng)用程序都能在狀態(tài)欄顯示自定義警報信息
* 活動管理器(Activity Manager)管理應(yīng)用程序的生命周期,并提供一個導(dǎo)航使用的共同的返回棧
對于更多的細節(jié)和應(yīng)用程序的演示,請看記事本教程。
庫
Android包括一組由C / C + Android系統(tǒng)組成的各個部分所用的庫。這些功能都通過Android應(yīng)用程序框架提供給開發(fā)者。下面列出了一些核心庫:
* * 系統(tǒng)C庫* - BSD,一個為基于嵌入式Linux的設(shè)備調(diào)整的標(biāo)準(zhǔn)C系統(tǒng)庫(libc)的派生實現(xiàn)
* * 媒體庫* - 基于PacketVideo的OpenCORE庫支持許多流行的音頻和視頻格式的播放和錄音,以及靜態(tài)圖像文件,包括MPEG4,H.264標(biāo)準(zhǔn),支持MP3,AAC,AMR,JPG和PNG格式
* * Surface Manager* - 管理訪問顯示子系統(tǒng)和從多個應(yīng)用程序無縫合成2D和3D圖形層
* * LibWebCore* - 一個為Android瀏覽器和可嵌入的網(wǎng)頁視圖提供支持的現(xiàn)代化的網(wǎng)頁瀏覽器引擎
* * SGL* - 底層的2D圖形引擎
* * 3D庫* - 基于OpenGL ES 1.0 API的實施庫,無論使用或是包含硬件3D加速(如果可用)和高度優(yōu)化的3D軟件光柵化
* * FreeType* - 位圖和矢量字體渲染
* * SQLite* - 為所有的應(yīng)用程序提供一個強大而且輕量級的關(guān)系數(shù)據(jù)庫引擎
Android運行時
Android包括一套核心庫,提供在Java編程語言的核心庫中大部分可用的功能。
每一個Android應(yīng)用程序與自己的Dalvik虛擬機運行在它自己的進程中。Dalvik被設(shè)計成設(shè)備可以有效地運行多個虛擬機。Dalvik虛擬機執(zhí)行的Dalvik可執(zhí)行格式(.dex)是最小的內(nèi)存占用優(yōu)化文件。虛擬機是基于寄存器的,運行已所包含的“dx”工具轉(zhuǎn)化成.dex格式的Java語言的編譯器編譯的類。
Dalvik虛擬機依賴于Linux內(nèi)核的基本功能,如:線程和低級別的內(nèi)存管理。
Linux內(nèi)核
Android依賴Linux 2.6版本的系統(tǒng)核心服務(wù),如安全,內(nèi)存管理,進程管理,網(wǎng)絡(luò)堆棧,驅(qū)動模型。內(nèi)核也作為硬件和軟件堆棧的其余部分之間的抽象層。