Android源码下device目录的分析

一般源码的编译前都会执行lunch命令,选择编译目标:
source build/envsetup.sh
lunch BUILD_BUILDTYPE
其中BUILDTYPE可以为user、userdebug、eng,排行越靠后,调试信息越多,权限越大,而其中的BUILD编译目标就是build目录下产品配置信息决定的。

vendorsetup.sh

build目录一般结构为:
build-> company -> product,在product同级的目录下可能有common目录,为所有产品共用。
在product目录下一般有vendorsetup.sh,这个脚本就是在envsetup.sh中被调用,envsetup.sh会遍历并且source源码目录下device和vendor(新版源码不推荐使用)下所有的vendorsetup.sh
vendorsetup.sh内容格式为:

add_lunch_combo rk3288_eng

通过上面语句,lunch菜单中将添加“rk3288_eng”选项。

AndroidProducts.mk

产品的实际属性由product目录下的AndroidProducts.mk,这个文件实际是一个散转,作用为包含其他命名的*.mk文件,这些文件下面可能会有各种以“PRODUCT_”开头的属性:PRODUCT_NAME、PRODUCT_MODEL、PRODUCT_BRAND等等。

BoardConfig.mk

通过上面的AndroidProducts.mk被包含进来,主要描述目标架构、硬件设备属性、编译器条件标识、boot地址、ramdisk大小等一系列硬件参数。

device.mk

也是通过AndroidProducts.mk被包含进来,主要描述该产品需要将哪些软件功能模块编译进镜像。

Android.mk

这个是Android源码树通用的模块Makefile,声明该目录在源码中的存在性。

    原文作者:Android源码分析
    原文地址: https://blog.csdn.net/o0avalon0o/article/details/62891932
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞