我们编译了上面的内容aosp_car_x86_64.在日常开发过程中,我们通常会基于自己创Product,本文将介绍如何创建自己Product,编译后,在我们自己的虚拟机中运行
1 概述
- Boardconfig.mk – 芯片硬件相关配置、分区设置等
- AndroidProducts.mk – 指定 product 配置,添加产品lunch combo
- product.mk – product 与软件相关的配置
- vendorsetup.sh(Android10之前)
2,创建Product
如何创建一个Product:
2.1,创建device目录
在 Android 系统上,product 四要素放在两个地方
- device 目录:用于向制造商放置 product 的。
- build/target 目录:用于放置 google 官方内置的 aosp product。
其中:
- build/target/product 里面放 AndroidProducts.mk, 跟 product.mk
- build/target/board 里面放 BoardConfig.mk 等。
和Google一样,我们可以在device创建我们的目录Product目录
mkdir -p device/guohuizhuan/car
2.二、新板级配置 BoardConfig.mk
BoardConfig.mk 它包含硬件芯片架构配置、分区尺寸配置等信息。考虑到我们在虚拟机上使用它,我们直接继承它aosp_car_x86_我们不能创建64的配置文件,product可直接引用配置文件
2.3,新建product配置
新建product配置文件
vim device/guohuizhuan/car/aosp_guohuizhuan_car.mk 其内容为
GHZ_PATH=vendor/guohuizhuan PRODUCT_PACKAGE_OVERLAYS := ${GHZ_PATH}/overlay EMULATOR_VENDOR_NO_SENSORS := true $(call inherit-product, device/generic/car/emulator/aosp_car_emulator.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_x86_64.mk) EMULATOR_VENDOR_NO_SOUND := true PRODUCT_NAME := aosp_guohuizhuan_car PRODUCT_DEVICE := generic_car_x86_64 PRODUCT_BRAND := Android PRODUCT_MODEL := Car on x86_64 emulator include ${GHZ_PATH}/device.mk
2.4,新建AndroidProducts.mk
新建AndroidProducts.mk文件,将product添加到 lunch
PRODUCT_MAKEFILES := \ $(LOCAL_DIR)/aosp_guohuizhuan_car.mk COMMON_LUNCH_CHOICES := \ aosp_guohuizhuan_car-userdebug
2.5,文件目录
device/guohuizhuan目录结构如下:
vendor/guohuizhuan目录结构如下:
3,编译验证
为了验证编译是否成功,我们可以device.mk添加系统属性
PRODUCT_PROPERTY_OVERRIDES = ro.product.vendor.manufacturer=guohuizhuan 执行编译:
source build/envsetup.sh lunch aosp_guohuizhuan_car make -j20 2>&1 | tee build.log 编译完成后,我们将在虚拟机中运行,如上一章所述
操作后检查 可以肯定已经成功了!