Android系統架構
Android 是谷歌開發的一款基於 Linux 內核的操作系統。系統架構分爲五層,從下到上依次是Linux內核層、硬件抽象層、系統運行庫層、應用框架層和應用層。
通俗點從下往上依次是:
- Linux kernel 層,很大一部分內容是驅動程序
- HAL 層,對下封裝驅動硬件操作,對上向 App 提供統一穩定的驅動操作接口
- Native層,主要是 C/C++ 庫以及 Java 虛擬機
- Java 層,主要是 Java 庫,系統服務等
- App 層,一些系統和三方APP
我們常說的 framework 大多數指的是中間三層的開發,即 Java層、Native層、HAL層
以 Android 系統啓動過程爲主線,以進程的視角來學習 Android 系統全貌,更爲清晰明瞭
Android 系統啓動過程由上圖從下往上的一個過程是由 Boot Loader 引導開機,然後依次進入 -> Kernel -> Native -> Framework -> App
- kernel 層主要向上提供了驅動,Hal 層加以封裝後,向上提供驅動程序功能
- Native 層通過 init 進程啓動了很多守護進程用於支持系統的運轉
- Java 層通過 Zygote 孵化了 Java 守護進程,用於支持系統的運行和 App 的運行
Framework 開發做什麼
谷歌幾乎每年都會發布最新的 AOSP 原生代碼,AOSP 原生代碼只支持極少數幾款手機,比如 Pixel。
芯片廠商根據自己的芯片的特點修改 AOSP ,讓其可以在自己芯片上跑起來
方案廠商根據自己開發的設備特點(主要是外設 如wifi 藍牙 傳感器等),修改芯片廠提供的源碼,使得軟件能在方案廠商的開發板上跑起來
大部分做產品的廠商拿到的就是芯片廠商提供的開發板硬件和系統源碼,產品廠商主要工作就是:
- 添加自己的硬件、驅動、HAL和硬件系統服務,硬件的提供商可能會提供相應軟件支持
- 定製系統 App,比如 Launcher Setting System UI Message Camera 等
- 開發廠商自己的系統 App,比如 音視頻播放器 應用商店 主題 紅外遙控等
- 個性化功能開發,比如軟件多開,手機分身,語音變聲,錄屏,雙卡雙待等等
- 集成一些常用三方應用,比如 微信 淘寶 愛奇藝等
- 系統穩定性 性能 安全相關優化
- 系統裁剪
方案廠商提供的系統源碼並不完美,App 中很多的 Bug 可能是 Framework 層導致的,產品在上市前需要針對系統 App 和熱門三方 App 及遊戲進行測試,解決掉 Framework 中存在的 bug。Framework 開發的主要工作就是解決這些 bug 並協助系統 App 的開發,同時可能要做一些新特性開發,系統性能和安全相關的工作。
Framework 中無窮無盡的 bug 也不能怪芯片廠商和方案廠商,因爲 Android 打孃胎裏出來就有數不清的 bug,在這裏可以查看 aosp 相關的 bug 信息。