Android 架構大剖析
和你一起終身學習,這里是程序員Android
本篇文章主要介紹?Android?開發(fā)中的部分知識點,通過閱讀本篇文章,您將收獲以下內容:
本篇文章主要介紹?Android?開發(fā)中的部分知識點,通過閱讀本篇文章,您將收獲以下內容:
一、Android 架構概覽
二、應用框架
三、Binder IPC
四、System Service
五、HAL 硬件抽象層
六、Linux Kernel
七、HAL層接口定義語言
八、架構資源
一、Android 架構概覽
Android系統架構包含以下組件:

圖1. Android系統架構
二、應用框架
應用程序框架是應用程序開發(fā)人員最常使用的。作為硬件開發(fā)人員,您應該了解開發(fā)人員API,因為許多API直接映射到基礎HAL接口,并且可以提供有關實現驅動程序的有用信息。
三、Binder IPC
Binder 進程間通信(IPC)機制允許應用程序框架跨進程調用Android系統服務代碼。并且高版本的 Framework API可以與Android系統服務進行交互。
四、 System Service
系統服務是集中的模塊化組件,例如窗口管理器,搜索服務或通知管理器。應用程序框架API公開的功能與系統服務進行通信以訪問底層硬件。Android包括兩組服務:系統(例如Window Manager和Notification Manager)和媒體(涉及播放和錄制媒體的服務)。
五、HAL 硬件抽象層
HAL定義了供硬件供應商實施的標準接口,該接口使Android無需考慮底層驅動程序的實現。使用HAL可使您實現功能而不會影響或修改更高級別的系統。HAL實現被打包到模塊中,并由Android系統在適當的時間加載。有關詳細信息,請參閱?硬件抽象層(HAL)。
六、 Linux Kernel
開發(fā)設備驅動程序類似于開發(fā)典型的Linux設備驅動程序。Android使用Linux內核的版本,并添加了一些特殊的附加功能,例如Low Memory Killer(內存管理系統,主要優(yōu)化低內存下的性能),喚醒鎖(?PowerManager?系統服務),Binder IPC驅動程序以及其他重要功能。移動嵌入式平臺。這些添加主要用于系統功能,并且不影響驅動程序開發(fā)。您可以使用任何版本的內核,只要它支持必需的功能(例如活頁夾驅動程序)即可。但是,我們建議使用最新版本的Android內核。有關詳細信息,請參見?構建內核
七、HIDL HAL層接口定義語言
Android 8.0重新設計了Android OS框架(在一個名為Treble的項目中 ),以使制造商將設備更新到新版本的Android變得更加輕松,快捷且成本更低。在這種新架構中,HAL接口定義語言(HIDL)指定了HAL及其用戶之間的接口,從而可以在不重建HAL的情況下替換Android框架。
注意:有關Project Treble的更多詳細信息,請參閱開發(fā)人員博客文章?Treble:Android的模塊化基礎和?Project Treble的更快采用。
HIDL通過新的供應商界面將供應商實施(由硅制造商編寫的特定于設備的低級軟件)與Android OS框架分開。供應商或SOC制造商只構建一次HAL,并將其放置在/vendor設備的分區(qū)中;然后,可以在不需重新編譯HAL的情況下,通過OTA更新來替換其自己分區(qū)中的框架。
傳統Android架構與當前基于HIDL的架構之間的區(qū)別在于供應商界面的使用:
1.在Android 7.x和更早版本中,不存在正式的供應商界面,因此設備制造商必須更新大部分Android代碼才能將設備移至更新版本的Android:

圖2.舊版Android更新環(huán)境
2.在Android 8.0及更高版本中,新的穩(wěn)定的供應商界面提供對Android硬件特定部分的訪問,因此設備制造商只需更新Android OS框架即可交付新的Android版本,而無需硅制造商的額外工作:

圖3.當前的Android更新環(huán)境
從Android 8.0及更高版本啟動的所有新設備都可以利用新架構。為了確保供應商實現的前向兼容性,供應商接口由供應商測試套件(VTS)進行驗證 ,這類似于兼容性測試套件(CTS)。您可以使用VTS在舊版和當前Android架構中自動執(zhí)行HAL和OS內核測試。
八、架構資源
有關Android體系結構的詳細信息,請參見以下部分:
HAL類型。描述綁定的,直通的,Same-Process(SP)和舊的HAL。
HIDL(常規(guī))。包含有關HAL及其用戶之間接口的常規(guī)信息。
HIDL(C ++)。包含有關創(chuàng)建HIDL接口的C ++實現的詳細信息。
HIDL(Java)。包含有關HIDL接口的Java前端的詳細信息。
ConfigStore HAL。描述用于訪問用于配置Android框架的只讀配置項的API。
設備樹覆蓋。提供有關在Android中使用設備樹覆蓋(DTO)的詳細信息。
供應商本地開發(fā)套件(VNDK)。描述用于實施供應商HAL的供應商專有庫的集合。
供應商接口對象(VINTF)。描述匯總有關設備的相關信息并使這些信息通過可查詢的API可用的對象。
適用于Android 8.0的SELinux。詳細介紹SELinux的更改和自定義。
友情推薦
至此,本篇已結束,如有不對的地方,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!
