新增系统属性

一、需求描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
使用adb命令获取下列属性:
- 主板SN:
- IMEI:
- IMEI2:
- MEID:
- WIFI:
- BT(bluetooth?):
- OSVersion:
- SEVersion:
- UFSVersion:
- QCN:
- MP版本:
- 写号激活状态:
- 密钥下载成功状态:

二、需求分析

1
2
3
4
5
6
7
8
9
10
- 主板SN:
- IMEI:
- IMEI2:
- MEID:
- WIFI:
- BT(bluetooth?):
- OSVersion:
- SEVersion:
- QCN:
- MP版本:
  • 以上一些属性在现有版本里面可以找到。
1
2
3
- UFSVersion:
- 写号激活状态:
- 密钥下载成功状态:
  • 而这三个属性找不到,就需要自己新增。

三、实现

  • 在build/buildprop.mk 文件中新增这三个属性
1
2
3
ADDITIONAL_BUILD_PROPERTIES += persist.urv.ufs.version=false
ADDITIONAL_BUILD_PROPERTIES += persist.urv.writenum.status=false
ADDITIONAL_BUILD_PROPERTIES += persist.urv.keydownload.status=false
  • 上述是比较简单的处理方法,就是通过宏新增三个属性并给他赋初值false。

  • 还可以在/device/qcom/sepolicy/vendor/common目录下的property_contexts文件给属性申请权限

eg:

1
2
3
persist.urv.ufs.version                 u:object_r:system_prop:s0
persist.urv.writenum.status u:object_r:system_prop:s0
persist.urv.keydownload.status u:object_r:system_prop:s0

四、后续修改

  • 可以通过找到对应更新相关状态代码逻辑的地方通过SystemProperties.set(“persist.sys.white.packagename” ,value); 方法去赋值 value就是需要赋的值。
  • 系统属性设置的值理论上都是String类型的,但可以通过系统原生的接口SystemProperties.getBoolean(XXX,XX);SystemProperties.getInt(XXX,XX);SystemProperties.get(XXX,XX);分别去返回boolean,Int,String类型的数据