上文我们编译了aosp_car_x86_64,在日常的开发过程中,我们一般都会创建基于自己的Product,本文将介绍如何创建自己的Product,并编译后在我们自己的虚拟机中运行
1 概述
Product的基本要素
- 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.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
编译完成后,我们按上一章节所述,在虚拟机中运行
运行起来之后查看
可以确定已经成功!