Android 9.0 如何自定义自己的build.prop

本文详细介绍了如何在Android 9.0编译系统中添加一个名为wq.prop的自定义文件。首先,在指定目录下创建wqinfo.sh脚本,并在Makefile中定义相关变量和目标。然后,通过Makefile规则将脚本内容写入wq.prop,并确保编译完成后wq.prop位于system目录下。最后,在property_service.cpp中加载wq.prop,使其生效。
摘要由CSDN通过智能技术生成

Android 9.0 如何在编译出来system目录下面新增wq.prop文件
一、在如下目录下面创建一个脚本文件wqinfo.sh
代码路径:build/make/tools/wqinfo.sh

#!/bin/bash
echo "persist.sys.custom.test=123"

二、在Makefile文件中添加需要编译的脚本
代码路径:android/build/make/core/Makefile
1、写一个脚本,并且定义一个变量,把该脚本的路径赋值给该变量

BUILDINFO_SH := build/make/tools/buildinfo.sh
WQINFO_SH := build/make/tools/wqinfo.sh
VENDOR_BUILDINFO_SH := build/make/tools/vendor_buildinfo.sh

2、定义一个wq.prop

intermediate_system_build_prop := $(call intermediates-dir-for,ETC,system_build_prop)/build.prop
intermediate_wq_build_prop := $(call intermediates-dir-for,ETC,system_build_prop)/wq.prop

3、定义一个编译出来的wq.prop的目录是system/wq.prop

# build.prop
INSTALLED_BUILD_PROP_TARGET := $(TARGET_OUT)/build.prop
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_BUILD_PROP_TARGET)
INSTALLED_WQ_PROP_TARGET := $(TARGET_OUT)/wq.prop
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_WQ_PROP_TARGET)

4、把wqinfo.sh脚本中的内容遍历拷贝到wq.prop文件中

	$(hide) cat $(INSTALLED_ANDROID_INFO_TXT_TARGET) | grep 'require version-' | sed -e 's/require version-/ro.build.expect./g' >> $@
	$(hide) build/make/tools/post_process_props.py $@ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_PROPERTY_BLACKLIST)
	
wq_prop_file := $(TARGET_WQ_PROP)
$(intermediate_wq_build_prop): $(WQINFO_SH)  $(wq_prop_file)
	@echo Target wqinfo: $@
	@mkdir -p $(dir $@)
	$(hide) echo > $@

	        bash $(WQINFO_SH) >> $@
build_desc :=

$(INSTALLED_BUILD_PROP_TARGET): $(intermediate_system_build_prop) $(INSTALLED_RECOVERYIMAGE_TARGET)
	@echo "Target build info: $@"
	$(hide) grep -v 'ro.product.first_api_level' $(intermediate_system_build_prop) > $@
ifdef INSTALLED_RECOVERYIMAGE_TARGET
	$(hide) echo ro.expect.recovery_id=`cat $(RECOVERYIMAGE_ID_FILE)` >> $@
endif

$(INSTALLED_WQ_PROP_TARGET): $(intermediate_wq_build_prop) $(INSTALLED_RECOVERYIMAGE_TARGET)
	@echo "Target build info: $@"
	$(hide) grep -v 'ro.product.first_api_level' $(intermediate_wq_build_prop) > $@

5、添加该变量INSTALLED_WQ_PROP_TARGET

include $(BUILD_SYSTEM)/sdk_font.mk

deps := \
	$(target_notice_file_txt) \
	$(tools_notice_file_txt) \
	$(OUT_DOCS)/offline-sdk-timestamp \
	$(SYMBOLS_ZIP) \
	$(COVERAGE_ZIP) \
	$(INSTALLED_SYSTEMIMAGE) \
	$(INSTALLED_QEMU_SYSTEMIMAGE) \
	$(INSTALLED_QEMU_VENDORIMAGE) \
	$(INSTALLED_USERDATAIMAGE_TARGET) \
	$(INSTALLED_RAMDISK_TARGET) \
	$(INSTALLED_SDK_BUILD_PROP_TARGET) \
	$(INSTALLED_BUILD_PROP_TARGET) \
	$(INSTALLED_WQ_PROP_TARGET) \
	$(ATREE_FILES) \
	$(sdk_atree_files) \
	$(HOST_OUT_EXECUTABLES)/atree \
	$(HOST_OUT_EXECUTABLES)/line_endings \
	$(SDK_FONT_DEPS)

三、在property_service.cpp文件中加载该文件wq.prop
代码路径:android/system/core/init/property_service.cpp

void load_system_props() {
    load_properties_from_file("/system/build.prop", NULL);
    load_properties_from_file("/odm/build.prop", NULL);
    load_properties_from_file("/vendor/build.prop", NULL);
	load_properties_from_file("/system/wq.prop", NULL);
    load_properties_from_file("/factory/factory.prop", "ro.*");
    load_recovery_id_prop();
}

最后编译出来会在system下面产生一个wq.prop文件
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值