1.2 Android平台介紹
Android平台是一組面向行動裝置的軟體包,它包含了一個作業系統、中介軟體和關鍵應用程式。開發人員可以使用Android SDK(軟體開發套件)為這個平台創造應用程式。應用程式使用Java語言編寫並在Dalvik之內運行。Dalvik是一款量身定製的虛擬機器,它專為嵌入式應用設計,運行在Linux核心上層。
1.2.1 Android平台特性
· 應用程式架構 支援組件的複用和更換
· Dalvik 虛擬機器 專門為行動裝置進行過最佳化
· 整合的瀏覽器 基於開源的 WebKit 引擎
· 最佳化的圖形機制 自訂的2D圖形庫,基於OpenGL ES 1.0規範的3D圖形實現(本項為硬體加速器可選)
· SQLite 輕量級的資料庫,支援結構化資料的儲存
· 媒體支援 面向常見的音頻、視頻以及靜態圖形檔案格式 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
· GSM 技術 GSM:global system for mobile communications (依賴硬體支援)
· Bluetooth, EDGE, 3G, and WiFi (依賴硬體支援)
· Camera, GPS, compass, and accelerometer (依賴硬體支援)
· Rich development environment 豐富的開發環境,包含一套硬體模擬器,一些用於程式調試、記憶體和效能剖析的工具,以及支援Eclipse整合式開發環境的外掛程式(ADT )。
1.2.2 Android平台架構
下方圖表顯示了Android作業系統的主要組件。要知道關於各個部分更多的細節,下文還有描述,請繼續看。
Android 平台架構
1.2.3 Applications(應用)
Android將預裝一組核心應用程式,包括email用戶端、簡訊服務、日曆議程、地圖服務、瀏覽器、連絡人和其他應用程式。所有應用程式都是Java程式設計語言編寫的。
1.2.4 Application Frameworks(應用程式框架)
上文所提的核心應用程式就是依賴架構層次API開發的,程式員們當然也可以充分使用這些API。應用架構設計的初衷是:簡化組件複用機制;任何應用都能發布自己的功能,這些功能又可以被任何其他應用使用(當然要受來自架構的強制安全規範的約束)。和複用機制相同,架構允許組件的更換。
所有應用都是一組服務和系統,一般包含:
· 一套豐富且可擴充的視圖 組件,含有lists, grids, text boxes, buttons, 甚至嵌入的網路瀏覽器
· Content Providers (內容提供器) 使一個應用可以訪問另外一個應用的資料(如連絡人),或者使一個應用內部可以共用自身資料
· Resource Manager (資源管理員),提供對非編碼資源——例如本地化字串、圖形和布局檔案——的訪問通道
· Notification Manager (通告管理器),使應用在狀態列顯示自訂的警報通知。
· Activity Manager (行動管理器)負責管理應用的生命週期,提供通用瀏覽回退支援
要知道更多細節,瞭解應用內幕,請參考教程 《Android應用編寫》
1.2.5 Libraries(庫)
Android包含一套C/C++庫,Android系統的各式組件都在使用。這些功能通過Android應用程式框架暴露給開發人員。下面列舉一些核心庫:
· System C library - 衍生於BSD的標準C系統庫(libc)實現(註:BSD:Berkeley Software Distribution,伯克利軟體套件,是Unix的衍生系統,1970年代由伯克利加州大學開創),尤其支援嵌入式的基於Linux的裝置。
· Media Libraries - 媒體庫基於PacketVideo's OpenCORE;媒體庫支援很多流行音頻和視頻格式、靜態圖形檔案(包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG )的播放和錄製
· Surface Manager - 管理範圍:對子系統顯示功能的訪問,跨應用的無縫組合2D和2D圖形層
· LibWebCore - 是流行的瀏覽器引擎,可以支援Android瀏覽器和嵌入應用的WEB視圖組件
· SGL - 底層的2D圖形引擎
· 3D libraries - 基於OpenGL ES 1.0 API的實現; 該類庫使用硬體3D加速器(如果硬體支援的話)或者內建的、高度最佳化的3D軟體加速機制。
· FreeType - 支援位元影像和向量字型
· SQLite - 能幹、輕量級的關係型資料庫引擎,面向所有應用
1.2.6 Android Runtime(Android 運行時)
Android的核心類庫提供Java類庫所提供的絕大部分功能。
每個Android應用都運行在自己的進程上,享有Dalvik虛擬機器為它分配的專有執行個體。為了支援多個虛擬機器在同一個裝置上高效運行,Dalvik被改寫過。
Dalvik虛擬機器執行的是Dalvik格式的可執行檔(.dex)——該格式經過最佳化,以降低記憶體耗用到最低。Java編譯器將Java源檔案轉為class檔案,class檔案又被內建的dx工具轉化為dex格式檔案,這種檔案在Dalvik虛擬機器上註冊並運行。
在一些底層功能——比如線程和低記憶體管理方面,Dalvik虛擬機器是依賴Linux核心的。
1.2.7 Linux Kernel(Linux核心)
Android依賴Linux 2.6版,提供核心系統服務:安全、記憶體管理、進程管理、網路組、驅動模型。核心部分還相當於一個介於硬體層和系統中其他軟體組之間的一個抽象層次。