关于android产品与平台的mk配置
- 产品mk1放在平台前面,为什么说可以替换平台的功能:
PRODUCT_COPY_FILES也遵循“First Match”原则,第一个定义或者赋值之后,忽略之后的类似动作:
例子:PRODUCT_PROPERTY_OVERRIDES += persist.sys.xxx=true
那么下一个PRODUCT_PROPERTY_OVERRIDES += persist.sys.xxx=false将会忽略
不要这个mk1要注意的是,不要添加平台已有的宏定义:
例子:KERNEL_XXX:= true或者KERNEL_XXX += hhh=1,如果平台有这个KERNEL_XXX,那么在这个mk1上配置是无效的,下面介绍mk2的时候会描述到。
2.产品mk2放在平台后面,为什么说可以裁剪平台功能:
第一种裁剪:Android mk有一原生的overlay宏:LOCAL_OVERRIDES_MODULES
bp对应(没验证过):"LOCAL_OVERRIDES_MODULES": "overrides",
mk的一个例子,只要在LOCAL_OVERRIDES_MODULES哪里写上要裁剪的模块即可,多个模块用空格隔开:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := XXXX
LOCAL_SRC_FILES := ./Android.mk
LOCAL_OVERRIDES_MODULES :=
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
LOCAL_VENDOR_MODULE := true
include $(BUILD_PREBUILT)
第二裁剪或者替换,比较简单,使用“:=”这个语句进行,这个符合比较粗暴,如果前面有直接覆盖,如果没,算新增;而且这个可以右边可以置空,相当于清楚前面所有的配置