美國NASDAQ上市公司
外商IT教育培訓企業

0800-777-100


週一到週五 09:00~21:00 週六到週日 09:00~18:00

熱門課程

剖析Android的系統架構,加強對Android編程理解和掌控

  • 時間:2017-06-15
  • 發布:達內教育台灣
  • 來源:IT

在深入Android開發之前,我們有必要去詳細了解下Android的系統架構,通過對Android架構的剖析,能夠更清楚地理解Android編程的邏輯和方法,從而對Android開發有一個全局的掌控。

Android的系統架構

Android的系統架構

這張圖是Google官方給出的架構圖,想必大多數開發者都很熟悉吧。

從圖中可以看出,Android大致可以分為四層架構、五塊區域。下面我們就從底層開始,逐層剖析。

1. Linux內核層(LINUX KERNEL)

Android系統是基於Linux內核, 借助Linux內核服務實現硬件設備驅動,進程和內存管理,網路協議棧,電源管理,無線通信等核心功能。

-Android4.0版本之前基於Linux2.6系列內核,4.0及之後的版本使用更新的Linux3.X內核,並且兩個開源項目開始有了互通。

Linux3.4增添了電源管理等更多功能,以增加與Android的硬體兼容性,使Android在更多設備上得到支持。現在android6.0仍然繼續延用著linux3.4.0,而linux最新的版本已經到了4.3系列,那麽為什麽android沒有繼續去更新Linux kernel的版本也是一個值得以後慢慢探討的課題。

Linux內核層同時也是硬體和軟件棧之間的抽象層,為Android設備的各種硬件提供了底層的驅動,如

顯示驅動(Display Driver)、照相機驅動(Camera Driver)、藍牙驅動(Bluetooth Driver)、閃存驅動(Flash Memeory Driver)、進程間通信驅動(IPC Driver)

USB驅動、鍵盤驅動(Keypad Driver)、WiFi驅動、音頻驅動(Audio Drivers)、電源管理(Power Management)

2. 系統運行庫層(LIBRARIES)

在Google官方的系統架構圖中,位於Linux內核層之上的系統運行庫層是應用程序框架的支撐,為Android系統中的各個組件提供服務。系統運行庫層由Android的系統類庫和運行時庫構成。

系統類庫

系統類庫大部分由C/C++編寫,所提供的功能通過Android應用程序框架為開發者所使用,主要的系統類庫及說明如下。

Surface Manager:界面管理庫,執行多個應用程序時,管理子系統的顯示,另外也對2D和3D圖形提供支持。

Media Framework:多媒體框架庫,支持多種常用的音頻和視頻格式的播放、錄制和回放,所支持的編碼格式包括MPEG4,MP3,H264,AAC,ARM,還能處理靜態圖片文件。

SQLite:本地小型關係數據庫,Android提供了一些新的SQLite數據庫API,以替代傳統的耗費資源的JDBC API。

OpenGL|ES:基於OpenGL ES 1.0API標準實現的3D跨平臺圖形庫,提供了3D繪圖的支持。

FreeType:用於顯示位圖和矢量字體。

Webkit:Web瀏覽器的軟體引擎,提供了瀏覽器內核的支持。

SGL:底層的2D圖形引擎。

SSL:安全套接層,是為網路通信提供安全及數據完整性的一種安全協議。

libc:函數庫,繼承自BSD的C函數庫bionic libc,更適合基於嵌入式Linux的移動設備。

除上述列舉的主要系統類庫之外,Android NDK(Native Development Kit),即Android原生庫,也十分重要。

NDK為開發者提供了直接使用Android系統資源,並采用C或C++語言編寫程序的接口。因此,第三方應用程序可以不依賴於Dalvik虛擬機進行開發。實際上,NDK提供了一系列從C或C++生成原生代碼所需要的工具,為開發者快速開發C或C++的動態庫提供方便,並能自動將生成的動態庫和Java應用程序一起打包成應用程序包文件,即.apk文件。

- 使用原生庫無法訪問應用框架層API,兼容性可能無法保障。而且從安全性角度考慮,Android原生庫用非類型安全的程式語言C,C++編寫,更容易產生安全漏洞,原生庫的缺陷(bug)也可能更容易直接影響應用程序的安全性。

系統運行時庫

Android運行時包含核心庫和Dalvik虛擬機兩部分。

核心庫:允許開發者使用Java語言來編寫Android應用,並提供Android的核心API,如android.os,android.net,android.media等。

Dalvik虛擬機:基於apache的java虛擬機,並被改進以適應低內存,低處理器速度的移動設備環境,是專門為移動設備定制的。Dalvik虛擬機依賴於Linux內核,實現進程隔離與線程調試管理,安全和異常管理,垃圾回收等重要功能。

3. 應用框架層(Application Framework)

這一層主要提供了構建應用程序時可能用到的各種API,Android自帶的一些核心應用就是使用這些API完成的,開發者可以通過使用這些API來快速構建自己的應用程序,同時也可以通過繼承實現個性化的擴展。

Activity Manager 活動管理器接口

Window Manager 窗口管理器接口

Content Providers 內容提供者接口

View System 視圖系統接口

Notification Manager 通知管理器接口

Package Manager包管理器接口

Telephony Manager 電話管理器接口

Resource Manager 資源管理程序接口

Location Manager 位置管理器接口

XMPP Service 基於XMPP協議的即時通信接口

4. 應用層(Applications)

所有安裝在手機上的應用程序都屬於這一層,諸如SMS短信,電話撥號,圖片瀏覽器,日歷,遊戲,地圖,web瀏覽器等程序,以及開發人員自己開發的其他應用程序。

篇後語

終於將android的基本架構進行了一個系統的羅列和分析,從中我們不難發現,平時開發中最常接觸是application層,一些application層應用到的東西通過應用框架層的引用一般都能在系統運行庫層找到對應的蹤跡,例如sqlite、webkit等,而如果想進行Android底層開發,那麽Linux和C++知識則是必備的,至於想詳細了解底層到達application層的開發邏輯,則需要日後慢慢去做更深一層次的探究。行文至此,Android的系統架構應該了然於心了吧。

上一篇:零基礎的人如何入門學習IOS開發?
下一篇:C語言入門書籍推薦,適合初學者學習的C語言入門書籍

2017年高考填報志願選擇IT行業的五大理由

選擇城市和中心
貴州省

廣西省

海南省