从零开始自定义安卓系统(5) 修改prop属性


从零开始自定义安卓系统(5) 修改prop属性

从product.mk修改

在上一节已经知道

1
2
3
4
5
PRODUCT_SYSTEM_PROPERTIES
PRODUCT_SYSTEM_EXT_PROPERTIES
PRODUCT_VENDOR_PROPERTIES
PRODUCT_ODM_PROPERTIES
PRODUCT_PRODUCT_PROPERTIES

这些可以修改prop属性

只需要加一行

1
PRODUCT_SYSTEM_PROPERTIES += ro.bluebird = 0

就可以在输出目录里的 out/target/product/bluebird_x86_64_only/system/build.prop 找到新属性.

其他属性对应的是其他文件, 整体对应关系是

1
2
3
4
5
PRODUCT_SYSTEM_PROPERTIES: system/build.prop
PRODUCT_SYSTEM_EXT_PROPERTIES: system_ext/etc/build.prop
PRODUCT_VENDOR_PROPERTIES: vendor/build.prop
PRODUCT_PRODUCT_PROPERTIES: product/etc/build.prop
PRODUCT_ODM_PROPERTIES: odm/etc/build.prop

对应的文件级设置为

1
2
3
4
5
TARGET_SYSTEM_PROP: system/build.prop
TARGET_SYSTEM_EXT_PROP: system_ext/etc/build.prop
TARGET_VENDOR_PROP 默认值(/vendor.prop):  vendor/build.prop
TARGET_PRODUCT_PROP 默认(/product.prop): product/etc/build.prop
TARGET_ODM_PROP 默认(/odm.prop): odm/etc/build.prop

要删除就需要使用

1
2
PRODUCT_SYSTEM_PROPERTY_BLACKLIST : system
PRODUCT_VENDOR_PROPERTY_BLACKLIST : vendor

具体实现在build/make/core/sysprop.mk 里面

拿一段举例就是

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ----------------------------------------------------------------
# odm/etc/build.prop
#

# _prop_files_ 决定了文件级参数, 取TARGET_ODM_PROP or /odm.prop
_prop_files_ := $(if $(TARGET_ODM_PROP),\
    $(TARGET_ODM_PROP),\
    $(wildcard $(TARGET_DEVICE_DIR)/odm.prop))
    
# 参数级参数  PRODUCT_ODM_PROPERTIES
_prop_vars_ := \
    ADDITIONAL_ODM_PROPERTIES \
    PRODUCT_ODM_PROPERTIES
    
# 输出路径
INSTALLED_ODM_BUILD_PROP_TARGET := $(TARGET_OUT_ODM)/etc/build.prop

# 调用build prop文件的函数 参数位置与上述一直
$(eval $(call build-properties,\
    odm,\
    $(INSTALLED_ODM_BUILD_PROP_TARGET),\
    $(_prop_files_),\
    $(_prop_vars_),\
    # 从上面删除的参数
    $(empty),\
    $(empty),\
    $(empty)))

实际应用中就是 添加一个 product.prop

1
2
3
4
5
6
├── AndroidProducts.mk
├── README.md
├── bluebird.mk
├── bluebird_x86_64_only
│   └── BoardConfig.mk
└── product.prop

并在bluebird.mk中添加

1
PRODUCT_SYSTEM_PROPERTIES += ro.bluebird=1⏎ 

编译运行后就能看到 自己新添加的prop属性了