PRODUCT_CHARACTERISTICS 详解

​在**/device/qcom/****/**.mk中增加PRODUCT_CHARACTERISTICS =default 不会影响其他功能.一个重要原因是该属性最终默认值即为default.

1.影响范围

首先在**/device/qcom/**/**.mk中加入PRODUCT_CHARACTERISTICS =default 后影响的范围是:

MIUI_TARGET_DEVICE_DIR := **/device/qcom/**

同时也会覆盖:
include **/device/common/common.mk
$(call inherit-product, device/qcom/**/**.mk)

其中device/qcom/**/**.mk​的影响范围是:

DEVICE_PACKAGE_OVERLAYS := device/qcom/**/overlay (该路径下没有与PRODUCT_CHARACTERISTICS相关的逻辑).
$(call inherit-product, device/qcom/common/common.mk)
common.mk中对该属性会进行赋值,但结果没变.
 
 
 
 

​2.分析PRODUCT_CHARACTERISTICS的作用机制

(1)在/v6-kk-**-dev/**/device/common/common.mk中会对PRODUCT_CHARACTERISTICS进行赋值.只有在机型为can**, canc**_ct, vir**,virg**_ct,ke**o​时该属性才会被赋值为nosdcard.

      ifneq (,$(filter $(TARGET_PRODUCT),can**, canc**_ct, vir**,virg**_ct,ke**o​))
      PRODUCT_CHARACTERISTICS := nosdcard
 
 
(2)之后在/v6-kk-**-dev/build/core/product_config.mk文件中根据PRODUCT_CHARACTERISTICS​的属性对TARGET_AAPT_CHARACTERISTICS​赋值,
可以看到如果PRODUCT_CHARACTERISTICS​为空,则TARGET_AAPT_CHARACTERISTICS为default.
     
       ifeq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CHARACTERISTICS),)
      TARGET_AAPT_CHARACTERISTICS := default
      else
      TARGET_AAPT_CHARACTERISTICS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CHARACTERISTICS))
     ​ endif

(3)/v6-kk-**-dev/build/core/Makefile会执行脚本/v6-kk-**-dev/build/tools/buildinfo.sh​,
将TARGET_AAPT_CHARACTERISTICS的值赋予ro.build.characteristics,而这个属性在Android编译完成后最终写入到/system目录下的build.prop文件
,运行时可通过property_get()[c/c++域] / SystemProperties_get*()[Java域]来读取:

 
 
echo "ro.build.characteristics=$TARGET_AAPT_CHARACTERISTICS"

ro.build.characteristics这个属性用途有:字符串中的product属性,判断是手机还是平板电脑的函数getDeviceType().

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值