說明
系統:Android10.0
裝置: FireFly RK3399 (ROC-RK3399-PC-PLUS)
前言
Android源碼是可以運作在多種架構, 多種SOC上的,必然就有硬體客制化的代碼,這些代碼一般都是SOC原廠, ODM/OEM公司在Android中對各種底層硬體進行适配的代碼, 是以編譯源碼必定會通過一定的配置來選擇那些客制化的代碼, 而這個就是通過産品配置來完成。本章重點介紹Android源碼中産品配置結構,友善大家對産品配置有一個整體認識
一, 産品概念
産品的概念其實很容易了解, 一個soc,配置好相關的外圍電路和外圍裝置, 就組合成了一套完整的硬體, 該套硬體可以進行自由定制,最終變成産品, 比如一套完整的開發闆, 可以做成平闆, 也可以做成機頂盒, 在代碼層進行控制,将平闆和機頂盒中不同的外設進行配置,就可以完成一套代碼相容多種産品的目的。
二,産品配置結構
在Android源碼中有幾個重要的目錄,用于産品配置主要集中在源碼中的device/, build/target/, vendor目錄,架構如下:
其實産品配置相關的目錄集中在源碼的device/, build/target/, vendor目錄下。
AOSP源碼目錄如下所示:
ls build/target
Android.mk board product
ls device/
common generic google linaro sample
rk3399源碼目錄目錄如下:
├── device
├── rockchip
├── common
├── rk3126c
├── ....省略
└── rk3399
└── vendor
├── firefly
├── rockchip
└── widevine
├── build/target
├── board
├── OWNERS
└── product