|
Android 內(nèi)核
? Linux 內(nèi)核版本 2.6
? 位于硬件和軟件堆之間的抽象層
? 核心服務(wù):安全機制、內(nèi)存管理、進程管理、網(wǎng)絡(luò)、硬件驅(qū)動。
Android 依賴 Linux 內(nèi)核 2.6 提供核心服務(wù),比如安全、內(nèi)存管理、進程管理、網(wǎng)絡(luò)、硬件驅(qū)動。在這里,Linux
內(nèi)核扮演的是硬件層和系統(tǒng)其它層次之間的一個抽象層的概念。這個操作系統(tǒng)并非類 GNU/Linux 的,因為其
系統(tǒng)庫,系統(tǒng)初始化和編程接口都和標(biāo)準(zhǔn)的 Linux 系統(tǒng)是有所不同的。
從 Google 目前 release 的 Linux 系統(tǒng)來看,其沒有虛擬內(nèi)存文件系統(tǒng),系統(tǒng)所用的是 yaffs2 文件系統(tǒng),具體
的映像也都位于 SDK 安裝目錄下。通過 emulator -console 命令,我們可以在 host 中斷下得到一個簡單的可以
控 制 Android 的 shell , 這 個 系 統(tǒng) 包 含 了 一 個 Toolbox , 提 供 一 些 基 本 的 命 令 工 具 , 集 中 在
/sbin,/system/sbin,/system/bin 中,但是很簡陋,命令種類也很少。
目前 Android 的程序安裝模式是靠 Eclipse 自動進行的,通過對底層的分析可知,大致步驟就是在/data/app 和
data/data 下存放 android 底層和普通內(nèi)核沒有什么大的區(qū)別,我們可以將其作為一個 Linux 來進行開發(fā)和
hacking。
Lib 和運行環(huán)境
lib
? C/C++庫:被各種 Android 組件使用
? 通過應(yīng)用程序框架開發(fā)者可以使用其功能
? 包括:
媒體庫:MPEG4
H.264 MP3 JPG PNG .....
WebKit/LibWebCore:Web 瀏覽引擎
SQLite 關(guān)系數(shù)據(jù)庫引擎
2D,3D 圖形庫、引擎
豐富的類庫支持:2D 和 3D 圖像庫 OpenGL ES、數(shù)據(jù)庫 SQLite、對象數(shù)據(jù)庫 db4o 類庫、媒體庫、基于 Linux
底層系統(tǒng) C 庫等等,讓應(yīng)用開發(fā)更簡單多樣。Google 使用 Apache 的 Harmony 類庫,Harmony 某些方面速度
快于 Sun 的 VM。Runtime 在 Dalvik Java VM 上,Dalvik 采用簡練、高效的 byte code 格式運行,它能夠在低
資耗和沒有應(yīng)用相互干擾的情況下并行執(zhí)行多個應(yīng)用。
運行時環(huán)境
核心庫提供的 Java 功能
Dalvik 虛擬機依賴于 Linux 內(nèi)核,例如線程或底層內(nèi)存管理
設(shè)備可以運行多個 Dalvik 虛擬機,每一個 Android 應(yīng)用程序在它自己的 Dalvik VM 實例中運行
VM 執(zhí)行優(yōu)化的 Dalvik 可執(zhí)行文件(.dex)
Dx-工具把編譯過的 Java 文件轉(zhuǎn)換為 dex 文件
應(yīng)用和框架
核心應(yīng)用,例如聯(lián)系人,電子郵件,電話,瀏覽器,日歷,地圖, ...
充分訪問所有核心應(yīng)用框架 API
簡化組件的重用
用 Java 編寫應(yīng)用程序
支持的功能
+ Application framework: 可重用的和可替換的組件部分,在這個層面上,所有的軟件都是平等的。
+ Dalvik virtul machine: 一個基于 Linux 的虛擬機。
+ Integrated browser: 一個基于開源的 WebKit 引擎的瀏覽器,在應(yīng)用程序?qū)印?nbsp;
+ Optimized graphics: 包含一個自定義的 2D 圖形庫和基于 OpenGL ES 1.0 標(biāo)準(zhǔn)的 3D 實現(xiàn)。
+ SQLite: 數(shù)據(jù)庫
+ Media support: 通用的音頻,視頻和對各種圖片格式的支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
+ GSM Telephony: GSM 移動網(wǎng)絡(luò), 硬件支持。
+ Bluetooth, EDGE, 3G, and WiFi: 都依賴于硬件支持。
+ Camera, GPS, compass, and accelerometer: 都依賴于硬件支持。
+ Rich development environment: 包含一套完整的開發(fā)工具集,方便跟蹤調(diào)試,內(nèi)存檢測和性能測試,而且
提供了
Eclipse 的插件。最底層的是一個 Linux Kernel,加載了幾個移動設(shè)備必要的系統(tǒng)驅(qū)動(這么說來 Android 基
礎(chǔ)系統(tǒng)是要以 GPL 發(fā)布了?不知道 34 家廠商的硬件開發(fā)商們是怎么樣想的);上面是類庫和 Runtime,綠色
的類庫部分可以看到大名鼎鼎的 SQLite,這個軟件甚至聲稱自己屬于公共領(lǐng)域(比 MIT License 還要強 @@),
字體 FreeType 是 BSD-style License 的,圖形庫 OpenGL ES 只需通過產(chǎn)品測試,無償使用于產(chǎn)品。再向上看
是應(yīng)用層的東西了,這里可以做的事情就非常多了,各個社區(qū),各個廠家都可以參與進來。難怪 Android 的sdk
可以 Apache License 發(fā)布了,對企業(yè)和開發(fā)人員友好啊。
那么 Google 自己的東西在哪里呢?沒錯,就是右
邊那個 runtime,最吸引技術(shù)人員的就是這個 runtime(注意,這個才是 Android 的 核 心)。Google 為它準(zhǔn)備了
一個虛擬機,叫做 Dalvik。這個讓人摸不著頭腦的東西的到底是什么?從開發(fā)平臺上我們清清楚楚地得到了
答案:Java
|
上一篇: Android開發(fā)筆記第五篇(虛擬機Dalvik,Android中各種JAVA包描述下一篇: Android開發(fā)筆記第二篇(Android 手機概念)
|