安卓系列教程之ROM系统开发-百问100ask
系统: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
当我们通过lunch选择产品的时候, 产品名以及产品的客制化文件都放在以上结果目录中,所以我们关注以上几个目录即可。