前言
有这样的需求,设置里“关于手机“,需要修改为“关于平板电脑”。
查看字符文件发现已经有相关字符,可以使用product属性来决定显示的文字。
->string.xml
<string name="about_settings" product="tablet" msgid="2888705054709289693">"关于平板电脑"</string> <string name="about_settings" product="default" msgid="4038626127378127613">"关于手机"</string> <string name="about_settings" product="device" msgid="9012888717090302815">"关于设备"</string> |
先说配置方法:
在device目录下相关产品的mk文件配置,就可以实现默认设备为“平板电脑”:
PRODUCT_CHARACTERISTICS = tablet |
1.PRODUCT_CHARACTERISTICS = tablet 配置的作用
build/make/core/product_config.mk
ifndef PRODUCT_CHARACTERISTICS TARGET_AAPT_CHARACTERISTICS := default else TARGET_AAPT_CHARACTERISTICS := $(PRODUCT_CHARACTERISTICS) endif |
build/make/make/core/main.mk
ADDITIONAL_PRODUCT_PROPERTIES += ro.build.characteristics=$(TARGET_AAPT_CHARACTERISTICS) |
build/make/core/product.mk
_product_single_value_vars += PRODUCT_CHARACTERISTICS |
从上面可以看出生成了ro.build.characteristics系统属性和为_product_single_value_vars提供了变量,但该属性在代码中全局搜索找不到有意义的使用地方。
2.product属性生效时机
由于ro.build.characteristics在framework层未被使用,所以猜测product属性是在编译阶段进行处理的。直接反编译验证,使用GDA工具Settings.apk查看res/values-zh-rCN/strings.xml,发现只会存在一个about_settings 字符串,并且无product属性,可以证明这个属性是在编译时处理的。