配套系列教学视频链接:
说明
系统:Android10.0
设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)
前言
本章重点介绍在device.mk, BoardConfig.mk, 产品名.mk中出现各种变量的意思。
一,包含
1, inherit-product函数
表示继承另外一个文件:
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_x86_64.mk)
$(call inherit-product-if-exists, device/mediatek/mt2712/device.mk)
2, include 文件
-include development/build/product_sdk.mk
include device/rockchip/common/BoardConfig.mk
在Makefile中可使用“-include”来代替“include”,来忽略由于包含文件不存在或者无法创建时的错误提示(“-”的意思是告诉make,忽略此操作的错误。make继续执行),不加-,当include的文件出错或者不存在的时候, make会报错并退出。
3, include和 inherit-product的区别
假设您PRODUCT_VAR := a在 A.mk 中,PRODUCT_VAR := b在 B.mk 中。
如果你在 A.mk 中include B.mk,你最终会得到PRODUCT_VAR := b。
但是如果你inherit-product在 A.mk 中 B.mk,你会得到PRODUCT_VAR := a b.
并inherit-product确保您不会两次包含 makefile,因为它Records that we've visited this node, in ALL_PRODUCTS.
二, 变量
通用变量: 表示在各个平台上都会用到, 如
PRODUCT_BRAND := Android
PRODUCT_NAME := sdk_phone_x86_64
PRODUCT_DEVICE := generic_x86_64
PRODUCT_MODEL := Android SDK built for x86_64
自定义变量:表示该变量如何使用, 取决于自己,如
BOARD_DDR_VAR_ENABLED := true
功能变量:表示改变量有特殊功能
1, PRODUCT_COPY_FILES: 用于完成拷贝,例如
PRODUCT_COPY_FILES += vendor/rockchip/common/phone/etc/spn-conf.xml:system/etc/spn-conf.xml
2,PRODUCT_PROPERTY_OVERRIDES: 用于设置系统属性(覆盖),例如
PRODUCT_PROPERTY_OVERRIDES += \
ro.product.version = 1.0.0 \
总结
通过理解文件中各个变量的意思, 方便大家对产品客制化的东西有一个初步的理解。