feature_manager 工具

一、device_features 使用方法

1、获取 device_features 中的配置 ( 路径:miui/cust/device_features )
其目录结构如下:
├── feature_manager -> …/…/build/tools/feature_tools.py
├── readme.txt
├── released
│ └── device_features
└── unreleased
[说明]
(1)feature_manager:是添加 feature 的工具,使用 excel 的方式为每个机型添加 feature,进入 miui/cust/device_features 目录下,执行:./feature_manager命令。
(2) readme.txt:使用 feature_manager 的说明。
(3) released/device_features:该目录存放已经发布机型的 features 文件,最终编译至 package/apps/MiuiSystemSdk 的assets/device_features目录中。
(4) unreleased:该目录存放未分布机型的 features 文件,为了防止通过反编译获取这些机型的信息,最终编译至/system/etc/ 目录中。
注意:其中,features 文件( .xml 配置文件)的名字,就是系统属性的 ro.product.device 的值。
该配置文件所支持的格式如下:
<1> <string name="string_key">abc</string>
<2> <bool name="bool_key">true|false</bool>
<3> <integer name="integer_key">123</integer>
<4> <string-array name="string-array_key"> <item>string1</item> <item>string2</item> ... </string-array>
<5> <integer-array name="integer-array_key"> <item>1</item> <item>2</item> ... </integer-array>

2、通过 FeatureParser.getXXX() 方法获取 ( miui/frameworks/base/library/core/java/miui/util/FeatureParser.java )
各类型获取方式对应如下:

xml文件列表获取方法
<bool name="bool_key">true/false</bool>boolean value = FeatureParser.getBoolean(“bool_key”,true/false);
<integer name="integer_key">123</integer>int value = FeatureParser.getInteger(“integer_key”,-1);
<integer-array name="integer-array_key"> <item>1</item> <item>2</item> ... </integer-array>int[] intArr = FeatureParser.getIntArray(“integer-array_key”);
<string name="string_key">abc</string>String value = FeatureParser.getString(“string_key”);
<string-array name="string-array_key"> <item>string1</item> <item>string2</item> .... </string-array>String[] strArr = FeatureParser.getStringArray(“string-array_key”);

注意:boolean 和 int 类型的属性可设默认值,当所要查找的feature不存在,返回默认值。其他类型查找不到指定 feature 时,返回 null。
另外还提供了 FeatureParser. hasFeature(String name, int type) 方法,来判断指定类型的指定属性是否存在,type的取值有:
<1> FeatureParser.TYPE_BOOL
<2> FeatureParser.TYPE_INTEGER
<3> FeatureParser.TYPE_STRING
<4> FeatureParser.TYPE_STRING_ARRAY
<5> FeatureParser.TYPE_INTEGER_ARRAY

示例:
在 MiuiPackageManagerService.java 中通过<bool name="support_fm">true</bool>,判断是否安装收音机 app:

if (!FeatureParser.getBoolean("support_fm", true)) {
    sIgnoreApks.add("/system/app/FM.apk");
}

二、辅助工具

由于机型越来越多,每次添加一个 feature 都会很麻烦,为此,所以建议使用 feature_manager 工具,可以轻松地为每个机型添加 feature,而且还能使 feature 文件格式和 feature 顺序保持一致,使用步骤如下:
1、进入 miui/cust/device_features目录下,执行 ./feature_manager 命令
若出现错误,可在 feature_manager 文件中修改,添加参数:cell_overwrite_ok=True
在这里插入图片描述
2、运行脚本后,会根据所有机型的 .xml文件,生成一个excel文件,如图:
在这里插入图片描述
3、添加或修改 feature,对于 string-array 和 integer-array 类型,多个值,用空格隔开:
在这里插入图片描述
则在 .xml 文件中会生成如下内容:
在这里插入图片描述
完成修改添加之后,保存并关闭 excel文件,则完成改动。

( 注意:若改动量较小,还是直接在指定的 xml 文件中更好一点,避免出现各种问题。)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值