一般Android根据产品修改makefile 包含关系如下 首先根据编译选项设定产品名。 我们需要在envsetup.sh 添加在哪个目录进行搜索vendorsetup.sh进行添加产品,这时候产品配置文件AndroidProducts.mk和板子配置文件BoardConfig.mk必须存在否则提示出错(和添加该产品的vendorsetup.sh同目录)。
编译的时候是先包含产品配置文件再包含板子配置文件,AndroidProducts.mk 一般地会先包含\build\target\product\full_base.mk ->带modern的需要包含telephony.mk没有moderm包含generic_no_telephony.mk 再包含core.mk ->core_base.mk->core_minimal.mk->base.mk->embedded.mk 。 这些都是Android 运行起来base的组件。
有一些私有的*lib , *.jar *.apk, *.rc 会再抽取出相应的基础platform_common.mk(这个名字举个例子而已)
所以最后产品的配置文件大概结构就是 AndroidProducts.mk (platform_common.mk(/build/target/product\full_base.mk)) 最好包含该产品特有需要打包的APK等组件和工具程序比如SHELL脚本和busybox。一般地会叫device.mk 放在vendor下面,还可以在device.mk 里嵌套包含。
Android的MAKEFILE写法多种多样,但基本都会是类似这种结构,也更容易理解维护,如果关系太乱,文件散乱维护也不方便。