android 系統架構分析

  瞭解系統架構對知識點梳理以及學習方向把控都要一定好處。Android分爲4個主要功能層,分別是Linux內核層(Linux Kernel),系統運行時庫層(Libraries和Android Runtime),應用程序架構層(Application Framework)和應用程序層(Applications)。

這裏寫圖片描述

應用層(Application Framework)

  應用層上包含系統內置的應用程序以及非系統級的應用程序。負責與用戶進行直接交互。

應用框架層(Application Framework)

  應用程序框架層提供開發Android應用程序所需的一系列類庫,使開發人員可以進行快速的應用程序開發,方便重用組件以及相關功能,也可以通過繼承實現個性化的擴展。
這裏寫圖片描述

系統運行庫層(Libraries、Android Runtime)

  系統運行庫層分爲兩部分,分別是系統類庫和Android運行時庫。系統類庫通俗講就是C/C++程序庫,該層會用到NDK的開發,所以大家一般習慣稱Native層。

1.系統類庫
  系統類庫大部分由C/C++編寫然後由Android系統中的不同組件所使用,並通過應用程序框架爲開發者提供服務
  這裏寫圖片描述
  剛剛文章中提到了NDK,Android NDK(Native Development Kit),是Android原生庫。NDK爲開發者提供了直接使用Android系統資源,並採用C或C++語言編寫程序的接口。因此,第三方應用程序可以不依賴於Dalvik虛擬機進行開發。NDK提供了一系列從C或C++生成原生代碼所需要的工具,爲開發者快速開發C或C++的動態庫提供方便,並能自動將生成的動態庫和Java應用程序一起打包成應用程序包文件,即.apk文件。
  使用原生庫無法訪問應用框架層API,兼容性可能無法保障。而且從安全性角度考慮,Android原生庫用非類型安全的程序語言C,C++編寫,更容易產生安全漏洞,原生庫的缺陷(bug)也可能更容易直接影響應用程序的安全性。
  
2.Android運行時庫
  當我們使用Android 應用框架時,Android系統會通過一些C/C++庫來支持我們使用的各個組件,使其能更好地爲我們服務。每個Java程序都運行在Dalvik虛擬機之上。與PC一樣,每個Android應用程序都有自己的進程,Dalvik虛擬機只執行.dex的可執行文件。當Java程序通過編譯,最後還需要通過SDK中的dx工具轉化成.dex格式才能正常在虛擬機上執行。Java虛擬機運行的是Java字節碼,而Dalvik虛擬機運行的則是其專有的文件格式dex(Dalvik Exceutable)的文件。
  Dalvik虛擬機有幾個主要特徵,專有的dex文件格式;.dex的優化,dex文件的結構是緊湊的;基於寄存器;一個應用,一個虛擬機實例,一個進程。每一個Android應用度運行在一個Dalvik虛擬機實例中,每一個虛擬機實例都是一個獨立的進程空間。
  

Linux內核層(Linux Kernel)

  Android 的核心繫統服務基於Linux 內核,在此基礎上添加了部分Android專用的驅動。系統的安全性、內存管理、進程管理、網絡協議棧和硬件設備驅動等都依賴於Linux內核服務。
這裏寫圖片描述
  

硬件抽象層(HAL)

  硬件抽象層是位於操作系統內核與硬件電路之間的接口層,其目的在於將硬件抽象化,爲了保護硬件廠商的知識產權,它隱藏了特定平臺的硬件接口細節,爲操作系統提供虛擬硬件平臺,使其具有硬件無關性,可在多種平臺上進行移植。 從軟硬件測試的角度來看,軟硬件的測試工作都可分別基於硬件抽象層來完成,使得軟硬件測試工作的並行進行成爲可能。通俗來講,就是將控制硬件的動作放在硬件抽象層中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章