Android属性方便了android系统进行定制,也有利于android上层应用可以方便操作。
一. android属性文件生成原理。
根据android属性值读取顺序/default.prop,/system/build.prop,/system/default.prop,/data/local.prop。
文件也会生成在不同的位置。default.prop生成在root目录下。其他在对应的/system。/data目录下。
ADDITIONAL_DEFAULT_PROPERTIES一般在对应产品的device.mk和/core/main.mk文件中定义,赋值。
一. android属性文件生成原理。
根据android属性值读取顺序/default.prop,/system/build.prop,/system/default.prop,/data/local.prop。
文件也会生成在不同的位置。default.prop生成在root目录下。其他在对应的/system。/data目录下。
default.prop与build.prop都是通过编译目录的build/core/Makefile文件生成的。下面就对这两个文件内容来源分析一下。
//src begin
# -----------------------------------------------------------------
# default.prop
INSTALLED_DEFAULT_PROP_TARGET := $(TARGET_ROOT_OUT)/default.prop
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DEFAULT_PROP_TARGET)
ADDITIONAL_DEFAULT_PROPERTIES := \
$(call collapse-pairs, $(ADDITIONAL_DEFAULT_PROPERTIES))
ADDITIONAL_DEFAULT_PROPERTIES += \
$(call collapse-pairs, $(PRODUCT_DEFAULT_PROPERTY_OVERRIDES))
ADDITIONAL_DEFAULT_PROPERTIES := $(call uniq-pairs-by-first-component, \
$(ADDITIONAL_DEFAULT_PROPERTIES),=)
$(INSTALLED_DEFAULT_PROP_TARGET):
@echo Target buildinfo: $@
@mkdir -p $(dir $@)
$(hide) echo "#" > $@; \
echo "# ADDITIONAL_DEFAULT_PROPERTIES" >> $@; \
echo "#" >> $@;
$(hide) $(foreach line,$(ADDITIONAL_DEFAULT_PROPERTIES), \
echo "$(line)" >> $@;)
build/tools/post_process_props.py $@
//src end
PRODUCT_DEFAULT_PROPERTY_OVERRIDES在mk文件中定义,并赋值。这个一般比较少看到赋值。一般没用。ADDITIONAL_DEFAULT_PROPERTIES一般在对应产品的device.mk和/core/main.mk文件中定义,赋值。
device.mk: