# Android O ## Before Android O - 在此之前的Android 系統架構當中,Android Framework 與Android HAL是打包成一個**system.img**的,而且Framework 與HAL之間是緊耦合的,通過鏈接的方式使用相應的硬件相關so庫。老版本的android 的系統框架當中framework與HAL之間的一般架構框架是: ![](https://i.imgur.com/rbFmx1A.png) ![](https://i.imgur.com/ydBjGxP.png) - 所以每次Android framework的升級需要對應的Android HAL升級。所以這樣每次Android 升級都需要Android 設備製造商投入大量的人力物理去升級相應的**Vendor HAL Implemetation**. ![](https://i.imgur.com/5ktE5Rv.png) ## Android O now - 引入HIDL的語言來定義Framework與HAL之間的接口。 - Android O裡使用HIDL來解耦Android Framework 與Vendor HAL Implemetation之間的關係,從而簡化降低Android系統升級的影響與難度。 ![](https://i.imgur.com/YYg3DWx.png) - Android Framework與Vendor HAL Implemetation會存放在不同的分區當中,Android Framework會在system分區當中,而Vendor HAL Implemetation會在一個新定義的分區(**Vendor.img**)當中,這樣刷新的system.img 才不會影響到**Vendor HAL Implemetation**,所以在Android O中的升級方式變成以下方式: ![](https://i.imgur.com/mcMn6H0.png) :::success - Android HAL 類型<----??????? - HIDL的相關介紹 - VNDK相關Vendor Native Development Kit ::: ## Android HAL (Hardware Abstraction Layer) ![](https://i.imgur.com/u8Ij0jv.png) ![](https://i.imgur.com/w8FcamC.png) ![](https://i.imgur.com/MvrWz6U.png) ![](https://i.imgur.com/6fQtVsb.png) ## Android HIDL(HAL interface definition language) - AIDL - 架構在Android binder 之上,用來定義Android 基於Binder通信的Client 與Service之間的接口 - HIDL - 定義的是Android Framework與Android HAL實現之間的接口。 - Android修改Binder部分。 ![](https://i.imgur.com/U9POQrM.png) ![](https://i.imgur.com/pXyUUYh.png) ## Reference [小碼農的小夢想](https://blog.csdn.net/ljp1205/article/details/77876008)