天天看點

android架構概述

一、應用程式 

Android 會同一系列核心應用程式包一起釋出,該應用程式包包括 email用戶端,SMS 短消息程式,月曆,地圖,浏覽器,聯系人管理程式等。所有的應用程式都是使用JAVA 語言編寫的。

二、應用程式架構 

開發人員也可以完全通路核心應用程式所使用的API架構。該應用程式的架構設計簡化了元件的重用;任何一個應用程式都可以釋出它的功能塊并且任何其它的應用程式都可以使用其所釋出的功能塊(不過得遵循架構的安全性限制)。同樣,該應用程式重用機制也使使用者可以友善的替換程式元件。 

隐藏在每個應用後面的是一系列的服務和系統, 其中包括; 

 豐富而又可擴充的視圖(Views),可以用來建構應用程式, 它包括清單(lists),網格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web 浏覽器。 

 内容提供器(Content Providers)使得應用程式可以通路另一個應用程式的資料(如聯系人資料庫), 或者共享它們自己的資料

 資料總管(Resource Manager)提供 非代碼資源的通路,如本地字元串,圖形,和布局檔案( layout files )。 

 通知管理器 (Notification Manager) 使得應用程式可以在狀态欄中顯示自定義的提示資訊。 

 活動管理器( Activity Manager) 用來管理應用程式生命周期并提供常用的導航回退功能。

三、程式庫 

Android 包含一些C/C++庫,這些庫能被 Android 系統中不同的元件使用。它們通過 Android 應用程式架構為開發者提供服務。以下是一些核心庫: 

 系統 C 庫 - 一個從 BSD 繼承來的标準 C 系統函數庫( libc ), 它是專門為基于 embedded linux 的裝置定制的。 

 媒體庫 - 基于 PacketVideo OpenCORE;該庫支援多種常用的音頻、視訊格式回放和錄制,同時支援靜态圖像檔案。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。 

 Surface Manager - 對顯示子系統的管理,并且為多個應用程式提 供了2D 和 3D 圖層的無縫融合。 

 LibWebCore - 一個最新的web 浏覽器引擎用,支援Android 浏覽器和一個可嵌入的web 視圖。 

 SGL - 底層的 2D 圖形引擎

 3D libraries - 基于 OpenGL ES 1.0 APIs 實作;該庫可以使用硬體 3D加速(如果可用)或者使用高度優化的3D 軟加速。 

 FreeType -位圖(bitmap)和矢量(vector)字型顯示。 

 SQLite - 一個對于所有應用程式可用,功能強勁的輕型關系型資料庫引擎。

四、Android 運作庫 

Android 包括了一個核心庫,該核心庫提供了JAVA 程式設計語言核心庫的大多數功能。 

每一個 Android 應用程式都在它自己的程序中運作,都擁有一個獨立的Dalvik虛拟 機執行個體。Dalvik 被設計成一個裝置可以同時高效地運作多個虛拟系統。

Dalvik 虛拟機執行(.dex)的 Dalvik 可執行檔案,該格式檔案針對小記憶體使用做了優化。同時虛拟機是基于寄存器的,所有的類都經由JAVA 編譯器編譯,然後通過 SDK 中 的 "dx" 工具轉化成.dex格式由虛拟機執行。 Dalvik 虛拟機依賴于linux核心的一些功能,比如線程機制和底層記憶體管理機制。

五、Linux 核心 

Android 的核心系統服務依賴于 Linux 2.6 核心,如安全性,記憶體管理,程序管理, 網絡協定棧和驅動模型。 Linux 核心也同時作為硬體和軟體棧之間的抽象層。

本文轉自linzheng 51CTO部落格,原文連結:http://blog.51cto.com/linzheng/1081770