|
Android 內(nèi)核
? Linux 內(nèi)核版本 2.6
? 位于硬件和軟件堆之間的抽象層
? 核心服務(wù):安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)、硬件驅(qū)動。
Android 依賴 Linux 內(nèi)核 2.6 提供核心服務(wù),比如安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)、硬件驅(qū)動。在這里,Linux
內(nèi)核扮演的是硬件層和系統(tǒng)其它層次之間的一個(gè)抽象層的概念。這個(gè)操作系統(tǒng)并非類 GNU/Linux 的,因?yàn)槠?nbsp;
系統(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 中斷下得到一個(gè)簡單的可以
控 制 Android 的 shell , 這 個(gè) 系 統(tǒng) 包 含 了 一 個(gè) Toolbox , 提 供 一 些 基 本 的 命 令 工 具 , 集 中 在
/sbin,/system/sbin,/system/bin 中,但是很簡陋,命令種類也很少。
目前 Android 的程序安裝模式是靠 Eclipse 自動進(jìn)行的,通過對底層的分析可知,大致步驟就是在/data/app 和
data/data 下存放 android 底層和普通內(nèi)核沒有什么大的區(qū)別,我們可以將其作為一個(gè) Linux 來進(jìn)行開發(fā)和
hacking。
Lib 和運(yùn)行環(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ùn)行,它能夠在低
資耗和沒有應(yīng)用相互干擾的情況下并行執(zhí)行多個(gè)應(yīng)用。
運(yùn)行時(shí)環(huán)境
核心庫提供的 Java 功能
Dalvik 虛擬機(jī)依賴于 Linux 內(nèi)核,例如線程或底層內(nèi)存管理
設(shè)備可以運(yùn)行多個(gè) Dalvik 虛擬機(jī),每一個(gè) Android 應(yīng)用程序在它自己的 Dalvik VM 實(shí)例中運(yùn)行
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: 可重用的和可替換的組件部分,在這個(gè)層面上,所有的軟件都是平等的。
+ Dalvik virtul machine: 一個(gè)基于 Linux 的虛擬機(jī)。
+ Integrated browser: 一個(gè)基于開源的 WebKit 引擎的瀏覽器,在應(yīng)用程序?qū)印?nbsp;
+ Optimized graphics: 包含一個(gè)自定義的 2D 圖形庫和基于 OpenGL ES 1.0 標(biāo)準(zhǔn)的 3D 實(shí)現(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 的插件。最底層的是一個(gè) Linux Kernel,加載了幾個(gè)移動設(shè)備必要的系統(tǒng)驅(qū)動(這么說來 Android 基
礎(chǔ)系統(tǒng)是要以 GPL 發(fā)布了?不知道 34 家廠商的硬件開發(fā)商們是怎么樣想的);上面是類庫和 Runtime,綠色
的類庫部分可以看到大名鼎鼎的 SQLite,這個(gè)軟件甚至聲稱自己屬于公共領(lǐng)域(比 MIT License 還要強(qiáng) @@),
字體 FreeType 是 BSD-style License 的,圖形庫 OpenGL ES 只需通過產(chǎn)品測試,無償使用于產(chǎn)品。再向上看
是應(yīng)用層的東西了,這里可以做的事情就非常多了,各個(gè)社區(qū),各個(gè)廠家都可以參與進(jìn)來。難怪 Android 的sdk
可以 Apache License 發(fā)布了,對企業(yè)和開發(fā)人員友好啊。
那么 Google 自己的東西在哪里呢?沒錯,就是右
邊那個(gè) runtime,最吸引技術(shù)人員的就是這個(gè) runtime(注意,這個(gè)才是 Android 的 核 心)。Google 為它準(zhǔn)備了
一個(gè)虛擬機(jī),叫做 Dalvik。這個(gè)讓人摸不著頭腦的東西的到底是什么?從開發(fā)平臺上我們清清楚楚地得到了
答案:Java
|
上一篇: Android開發(fā)筆記第五篇(虛擬機(jī)Dalvik,Android中各種JAVA包描述下一篇: Android開發(fā)筆記第二篇(Android 手機(jī)概念)
|