安卓系統架構

LyAsano發表於2022-02-26

一、Android 簡介

  Android是一個開源的,基於Linux的移動裝置軟體平臺和作業系統,主要使用於移動裝置,如智慧手機和平板電腦。早期由 Google 開發,後由開放手機聯盟(Open Handset Alliance)開發。它採用了軟體堆層(Software Stack,又名以軟體疊層)的架構,主要分為三部分。底層以 Linux 核心工作為基礎,只提供基本功能;其他的應用軟體則由各公司自行開發,以 Java 作為編寫程式的一部分。

二、Android 架構

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

三、Android 架構分析

  (1)應用程式層

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

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

  (2)應用程式框架層

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

  開發者完全可以訪問核心應用程式所使用的 API 框架。通過提供開放的開發平臺,Android 使開發者能夠編制極其豐富和新穎的應用程式。開發者可以自由地利用裝置硬體優勢訪問位置資訊、執行後臺服務、設定鬧鐘、向狀態列新增通知等。

  應用框架層以 Java 類的形式為應用程式提供許多高階的服務。應用程式開發者被允許在應用中使用這些服務。所有的應用程式都是由一系列的服務和系統組成的,主要包括以下幾種:

  

  (3)資料庫

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

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

  在 Linux 核心層的上面是一系列程式庫的集合,包括開源的 Web 瀏覽器引擎 Webkit ,知名的 libc 庫,用於倉庫儲存和應用資料共享的 SQLite 資料庫,用於播放、錄製音視訊的庫,用於網路安全的 SSL 庫等。

  這個類別包括了專門為 Android 開發的基於 Java 的程式庫。這個類別程式庫的示例包括應用程式框架庫,如使用者介面構建,圖形繪製和資料庫訪問。一些 Android 開發者可用的 Android 核心程式庫總結如下:

  • android.app - 提供應用程式模型的訪問,是所有 Android 應用程式的基石。
  • android.content - 方便應用程式之間,應用程式元件之間的內容訪問,釋出,訊息傳遞。
  • android.database - 用於訪問內容提供者釋出的資料,包含 SQLite 資料庫管理類。
  • android.opengl - OpenGL ES 3D 圖片渲染 API 的 Java 介面。
  • android.os - 提供應用程式訪問標註作業系統服務的能力,包括訊息,系統服務和程式間通訊。
  • android.text - 在裝置顯示上渲染和操作文字。
  • android.view - 應用程式使用者介面的基礎構建塊。
  • android.widget - 豐富的預置使用者介面元件集合,包括按鈕,標籤,列表,佈局管理,單選按鈕等。
  • android.webkit - 一系列類的集合,允許為應用程式提供內建的 Web 瀏覽能力。

  (4)Android 執行環境

  Android 包含一個核心庫的集合,該核心庫提供了 Java 程式語言核心庫的大多數功能。幾乎每一個 Android 應用程式都在自己的程式中執行,都擁有一個獨立的 Dalvik 虛擬機器例項。
  Dalvik 是 Google 公司自己設計的用於 Android 平臺的 Java 虛擬機器。Dalvik 虛擬機器是 Google 等廠商合作開發的 Android 移動裝置平臺的核心組成部分之一,它可以支援已轉換為 .dex (Dalvik Executable) 格式的 Java 應用程式的執行。
  .dex 格式是專為 Dalvik 設計的一種壓縮格式,適合記憶體和處理器速度有限的系統。
  Dalvik 經過優化,允許在有限的記憶體中同時執行多個虛擬機器的例項,並且每一個 Dalvik 應用作為一個獨立的 Linux 程式執行。Dalvik 虛擬機器依賴 Linux 核心提供基本功能,如執行緒和底層記憶體管理。

   (5)LINUX核心

  Android 基於 Linux 提供核心系統服務,位於最底層的 Linux - 包括大約115個補丁的 Linux 3.6。提供包含安全、記憶體管理、程式管理、網路堆疊、驅動模型等基本的系統功能。除了標準的 Linux 核心外,Android 還增加了核心的驅動程式,如Binder (IPC) 驅動、顯示驅動、輸入裝置驅動、音訊系統驅動、攝像頭驅動、WiFi驅動、藍芽驅動、電源管理。於此同時,核心處理所有 Linux 所擅長的工作,如網路和大量的裝置驅動,從而避免相容大量外圍硬體介面帶來的不便。
  Linux 核心也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。
  分層的好處就是使用下層提供的服務為上層提供統一的服務,遮蔽本層及以下層的差異,當本層及以下層發生了變化時,不會影響到上層,可以說是高內聚、低耦合。

 

相關文章