天天看點

我對android 軟體棧了解

android 軟體棧如圖所示:

  

我對android 軟體棧了解

   android平台的核心是linux核心,它負責裝置驅動程式、資源通路、電源管理和完成其他作業系統的職責。提供的裝置驅動程式包括顯示器、照相機,鍵盤、wifi、閃存、音頻和ipc(inter:processconmnmication,程序間通信)(ipc binder機制)。盡管核心是linux,但android裝置(比如motorola droid,樂os,cymode)上的絕大部分應用程式都是使用java開發,通過dalⅥk vm運作的。

  我們看一下另一層,核心之上是許多c/c++庫,比如opengl、webkit、freetype、ssl(secure socketslayer,安全套接字層)、libc (c運作時庫),sqlite和媒體。基于bsd (berkeley sofiware distribution,伯克利軟體套件)的系統c庫針對嵌入式linux裝置進行了調優(大小約為原始大小的一半).媒體庫基于packetvideo(www.packetvideo.com/)的opencore。這些庫負責錄制和播放音頻和視訊格式的内容。一個名為surface managertyj庫控制對顯示系統的通路,支援2d和3d。在新版本中可能添加更多這樣的本地庫。

  webkit庫負責浏覽器支援.webkit也是google公司的chrome和蘋果公司的safari使用的庫。

freetype庫負責字型支援。sqlite (www.sqlite.org/)是一個可在裝置自身上使用的關系資料庫。sqlite也是關系資料庫的一項獨立的開源成果,沒有直接綁定到android。适用于sqlite的工具也可用于android教據庫。

大多數應用程式架構都通過dalvik vm通路這些核心庫,dalvik vm就像android平台的入口。上節已經提到,dalvik經過了優化,可以運作多個vm執行個體。通路這些核心庫時,每個java應用程式都會獲得自己的vm執行個體。

android java apl的主要庫包括電話、資源,位置、ul、contentprovider(資料)和包管理器(安裝、安全等)。程式員使用此java api開發最終使用者應用程式。裝置上的一些最終使用者應用程式示例包括home、contacts、phone、browser等。

android還支援google公司一個名為skia的自定義2d圖形庫,這個庫是使用c和c++編寫的。skia也是google chrome溯覽器的核心元件。然而,android中的3d api基于來自khronos小組(www.khronos.org)的一個opengl es實作。opengl es包含opengl中面向嵌入式系統的子集。

從媒體角度講,android平台支援最常見的音頻,視訊和圖像格式。也是支援多媒體最多的移動平台。從無線角度講.android的api可支援藍牙,edge、3g、wifiaigsm (global system for mobile communication.全球移動通信系統)、電話而具體則取決于裝置硬體。