- Android 5從入門到精通
- 李波
- 1623字
- 2021-03-19 15:28:56
1.3 Android系統架構
圖1.1是Android操作系統的架構,架構包括4層,由上到下依次是應用程序層、應用程序框架層、核心類庫和Linux內核。其中核心類庫中包含了系統庫及Android運行環境。

圖1.1 Android操作系統的架構
1.3.1 應用程序層(Applications)
Android裝配一個核心應用程序集合,包括E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯系人管理程序和其他設置,所有應用程序都是用Java編程語言編寫的。用戶開發的Android應用程序和Android的核心應用程序是同一層次的,它們都是基于Android的系統API構建的。
1.3.2 應用程序框架層(Application Framework)
應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布它的功能且任何其他應用程序都可以使用這些功能(需要服從框架執行的安全限制),這一機制允許用戶替換組件。開發者完全可以訪問核心應用程序所使用的API框架。通過提供開放的開發平臺,Android使開發者能夠編寫非常豐富和新穎的應用程序。開發者可以自由地利用設備硬件優勢訪問位置信息,運行后臺服務,設置鬧鐘,向狀態欄添加通知等。
所有的應用程序都是由一系列的服務和系統組成的,主要包括以下幾種:
●視圖(Views)。這里的視圖指的是豐富的、可擴展的視圖集合,可用于構建一個應用程序,包括列表(Lists)、網格(Grids)、文本框(TextBoxes)、按鈕(Buttons),甚至是內嵌的Web瀏覽器。
●內容管理器(Content Providers)。內容管理器使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫)或者共享自己的數據。
●資源管理器(Resource Manager)。資源管理器提供訪問非代碼資源,如本地字符串、圖形和分層文件(layout files)。
●通知管理器(Notification Manager)。通知管理器使得所有的應用程序都能夠在狀態欄顯示通知信息。
●活動管理器(Activity Manager)。在大多數情況下,每個Android應用程序都運行在自己的Linux進程中。當應用程序的某些代碼需要運行時,這個進程就被創建并一直運行下去,直到系統認為該進程不再有用為止,然后系統將回收該進程占用的內存以便分配給其他的應用程序。活動管理器管理應用程序生命周期,并且提供通用的導航回退功能。
1.3.3 系統庫(Libraries)
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是一個所有應用程序都可以使用的強大而輕量級的輕型關系數據庫引擎。
1.3.4 Android運行環境(Android Runtime)
Android包含一個核心庫的集合,該核心庫提供了Java編程語言核心庫的大多數功能。幾乎每一個Android應用程序都在自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。
Dalvik是Google公司自己設計用于Android平臺的Java虛擬機。Dalvik虛擬機是Google等廠商合作開發的Android移動設備平臺的核心組成部分之一。它可以支持已轉換為.dex(即Dalvik Executable)格式的Java應用程序的運行,.dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。Dalvik經過優化,允許在有限的內存中同時運行多個虛擬機的實例,并且每一個Dalvik應用作為一個獨立的Linux進程執行。Dalvik虛擬機依賴于Linux內核提供基本功能,如線程和底層內存管理。
1.3.5 Linux內核(Linux Kernel)
Android基于Linux提供核心系統服務,例如:安全、內存管理、進程管理、網絡堆棧、驅動模型。除了標準的Linux內核外,Android還增加了內核的驅動程序:Binder(IPC)驅動、顯示驅動、輸入設備驅動、音頻系統驅動、攝像頭驅動、WiFi驅動、藍牙驅動、電源管理。
Linux內核也作為硬件和軟件之間的抽象層,它隱藏具體硬件細節而為上層提供統一的服務。分層的好處就是使用下層提供的服務而為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化而不會影響到上層,可以說是高內聚、低耦合。
- Getting Started with Citrix XenApp? 7.6
- GitLab Cookbook
- 編程珠璣(續)
- Python神經網絡項目實戰
- 征服RIA
- HTML5入門經典
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(1)
- C/C++數據結構與算法速學速用大辭典
- Learning Material Design
- JavaScript+jQuery網頁特效設計任務驅動教程
- Scala編程實戰
- 深入實踐DDD:以DSL驅動復雜軟件開發
- 基于GPU加速的計算機視覺編程:使用OpenCV和CUDA實時處理復雜圖像數據
- Three.js權威指南:在網頁上創建3D圖形和動畫的方法與實踐(原書第4版)
- WCF技術剖析(卷1)