Android系統架構(圖解)


下圖是 Android 操作系統的架構,架構包括 4 層,由上到下依次是應用程序層、應用程序框架層、核心類庫和 Linux 內核。其中,核心類庫中包含系統庫及 Android 運行環境。

Android 操作系統的架構示意圖
圖1  Android 操作系統的架構

應用程序層

Android 裝配了一個核心應用程序集合,包括 E-mail 客戶端、SMS 短消息程序、日歷、地圖、瀏覽器、聯系人管理程序和其他程序,所有應用程序都是用 Java 編程語言編寫的。


用戶開發的 Android 應用程序和 Android 的核心應用程序是同一層次的,它們都是基於 Android 的系統 API 構建的。

應用程序框架層

應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布它的功能且任何其他應用程序都可以使用這些功能(需要服從框架執行的安全限制),這一機制允許用戶替換組件。

開發者完全可以訪問核心應用程序所使用的 API 框架。通過提供開放的開發平台,Android 使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬件優勢訪問位置信息、運行后台服務、設置鬧鍾、向狀態欄添加通知等。

所有的應用程序都是由一系列的服務和系統組成的,主要包括以下幾種:

系統/服務 英文名稱 說明
視圖 View 這里的視圖指的是豐富的、可擴展的視圖集合,可用於構建一個應用程序,包括列表 (Lists)、網格 (Grids)、文本框 (TextBoxes)、按鈕 (Buttons),甚至是內嵌的 Web 瀏覽器。
內容管理器 Content Provider 內容管理器使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫)或者共享自己的數據。
資源管理器 Resource Manager 資源管理器提供訪問非代碼資源,如本地字符串、圖形和分層文件 (layout files)。
通知管理器 Notification Manager 通知管理器使得所有的應用程序都能夠在狀態欄顯示通知信息。
活動管理器 Activity  Manager 在大多數情況下,每個 Android 應用程序都運行在自己的 Linux 進程中。當應用程序的某些代碼需要運行時,這個進程就被創建並一直運行下去,直到系統認為該進程不再有用為止,然后系統將回收該進程占用的內存以便分配給其他的應用程序。活動管理器管理應用程序生命周期,並且提供通用的導航回退功能。

系統庫

Android 本地框架是由 C/C++ 實現的,包含 C/C++ 庫,以供 Android 系統的各個組件使用。這些功能通過 Android 的應用程序框架為開發者提供服務。

這里只介紹 C/C++ 庫中的一些核心庫:

名稱 說明
系統C語言庫 標准C語言系統庫 (libc) 的 BSD 衍生,調整為基於嵌入式 Linux 設備。
媒體庫 基於 PacketVideo 的 OpenCORE,這些庫支持播放和錄制許多流行的音頻和視頻格式,以及靜態圖像文件,包括 MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
界面管理 管理訪問顯示子系統,並且為多個應用程序提供 2D 和 3D 圖層的無縫融合。
LibWebCore  新式的 Web 瀏覽器引擎,支持 Android 瀏覽器和內嵌的 Web 視圖。
SGL 一個內置的 2D 圖形引擎。
3D 庫 基於 OpenGL ES 1.0 APIs 實現,該庫可以使用硬件 3D 加速或包含高度優化的 3D 軟件光柵。
FreeType 位圖和矢量字體顯示渲染。
SQLite SQLite 是一個所有應用程序都可以使用的強大且輕量級的關系數據庫引擎。

Android 運行環境

Android 包含一個核心庫的集合,該核心庫提供了 Java 編程語言核心庫的大多數功能。幾乎每一個 Android 應用程序都在自己的進程中運行,都擁有一個獨立的 Dalvik 虛擬機實例。

Dalvik 是 Google 公司自己設計的用於 Android 平台的 Java 虛擬機。Dalvik 虛擬機是 Google 等廠商合作開發的 Android 移動設備平台的核心組成部分之一,它可以支持已轉換為 .dex (Dalvik Executable) 格式的 Java 應用程序的運行。

.dex 格式是專為 Dalvik 設計的一種壓縮格式,適合內存和處理器速度有限的系統。

Dalvik 經過優化,允許在有限的內存中同時運行多個虛擬機的實例,並且每一個 Dalvik 應用作為一個獨立的 Linux 進程執行。Dalvik 虛擬機依賴 Linux 內核提供基本功能,如線程和底層內存管理。

Linux內核

Android 基於 Linux 提供核心系統服務,例如安全、內存管理、進程管理、網絡堆棧、驅動模型。除了標准的 Linux 內核外,Android 還增加了內核的驅動程序,如Binder (IPC) 驅動、顯示驅動、輸入設備驅動、音頻系統驅動、攝像頭驅動、WiFi驅動、藍牙驅動、電源管理。

Linux 內核也作為硬件和軟件之間的抽象層,它隱藏具體硬件細節而為上層提供統一的服務。

分層的好處就是使用下層提供的服務為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化時,不會影響到上層,可以說是高內聚、低耦合。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM