Android開發之Android體系架構介紹

來源:互聯網
上載者:User

 

來源:Android開發之Android體系架構介紹

在Android中,整個架構由應用、應用程式框架、原生庫、Android即時庫、硬體抽象層、Linux核心等若干部分組成。

其中最核心的Android虛擬機器部分也已經開放源碼。對開發人員而言,如果期望在深度定製的基礎上開發出差異化、高度競爭力的產品,需要在應用程式框架、原生庫、硬體抽象層、Linux核心等方面有較深入的理解。圖1顯示了Android的體系架構。


圖1 Android體系架構

1、核心服務

所謂Android的核心服務主要包括熵服務(Entropy Service)、電源管理器(Power Manager)、Activity管理器(Activity Manager)、通話寄存器(Telephony Registry)、包管理器(Package Manager)、賬戶管理器(Account Manager)、內容組合管理(Content Manager)、內容提供器(System Content Providers)、電池服務(Battery Service)、光線服務(Lights Service)、震動服務(Vibrator
Service)、鬧鐘管理器(Alarm Manager)、看門狗(Init Watchdog)、視窗管理器(Window Manager)、藍芽服務(Bluetooth Service)等。這些服務和應用程式密切相關,但通常應用程式不能直接接入核心服務。早期版本中的硬體服務(Hardware Service)和感應器服務(Sensor Service)已經被移除,光線服務和震動服務在核心服務通過系統伺服器來啟動。系統伺服器的實現位於SystemServer.java中。

2、原生服務

在Android中,上層的應用是基於Java開發的,但是架構層的服務很多是基於C/C++的,為了說明的方便,在本書中,將基於C/C++的服務稱為原生服務。目前,Android提供的和多媒體相關的原生服務主要有渲染管理器(Surface Flinger)、音頻管理器(Audio Flinger)、Camera服務(Camera Service)、媒體播放服務(MediaPlayer Service)、音頻策略服務(Audio Policy Service)等。

3、原生庫

Android的原生庫主要是基於C\C++實現的一些原生組件,包括C庫Bionic、瀏覽器引擎Webkit、多媒體引擎OpenCORE、SQL資料庫SQLite、3D渲染引擎OpenGL ES、位元影像和字型向量渲染引擎FreeType、2D映像渲染引擎SGL(Skia Graphics Library)、互連網安全性通訊協定SSL和TSL等。

4、運行時組件

在Android中,比較重要的Java組件包括Java核心庫、Dalvik虛擬機器等,兩者一起構成了Android的應用環境基礎。

5、硬體抽象層

在Android中,考慮到並非所有組件都具有標準的Linux核心驅動介面,而且基於GPL V20許可的Linux驅動核心會暴露出專用IP核的細節,另外Android對硬體驅動也有些特殊的需求。為了屏蔽底層實現的細節,實現硬體邏輯和硬體介面的分離,Google定義了一個硬體抽象層的介面HAL(Hardware Abstraction Layer)。

HAL在為商業開發帶來便利的同時,對系統的效能略有阻礙,更多的層次會導致系統變慢,在案頭Ubunut Linux中,為了加快系統的啟動速度,就徹底拋棄了HAL的理念。

6、Linux核心

Android平台是基於Linxu核心搭建的,Linux核心的優勢在於大記憶體管理、進程管理、基於許可權的安全模型、統一的驅動模型、共用庫支援、代碼開源等。

Android平台在設計過程中,針對移動終端資源有限的特點,對Linux進行了一定程度的裁剪:砍掉了原生的視窗系統、去除了對GNU Libc的支援(引入了更高效、針對嵌入式最佳化過的Bionic)、裁剪掉了一些標準Linux工具的部分特性等。

另外Android針對移動終端的特點還對Linux核心在鬧鐘(Alarm)、Low Memory Killer、Ashmem、核心調試(Kernel Debugger)、處理序間通訊(Binder)、日誌(Logger)、電源管理(Power Management)等方面做了大量的最佳化。

其中Low Memory Killer相對於Linux標準OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死進程來釋放需要的記憶體。Low Memory Killer的實現主要位於aurora\msm\msm drivers/staging/android/lowmemorykiller.c檔案中。

Ashmem為進程間提供大塊共用記憶體,同時為核心提供回收和管理這個記憶體的機制。 Ashmem的實現位於system\core\libcutils\ashmem-dev.c檔案中。(摘自華清遠見系列圖書《Android多媒體編程從初學到精通》)

更多華清遠見原創教材展:http://www.farsight.com.cn/FarsightBooks/home.html

嵌入式及3G相關資源及學習請點擊:嵌入式開發視頻 android開發視頻 android培訓 3G培訓 QT培訓 QT開發視頻 物聯網培訓 物聯網技術視頻 嵌入式學習    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.