Android P 增加系统属性必读

如何增加属性

Android P 对属性配置有很严格的要求,不建议增加system 分区内的属性,建议增加的属性都在nonsystem分区。

  • Non-system 分区的限制

Android P 为稳定的exported-platform 属性在non-system 分区的使用定义了4 种类型的白名单:

1. vendor-init-settable

· 非system 分区的Property 文件和init rc 文件只能write 这些属性及vendor (或odm) 属性。

2. vendor-init-readable

· 非system 分区的init rc 文件只能read 这些属性及vendor (或 odm) 属性。

3. vendor-init-actionable

· 非system 分区的init rc 文件只能使用这些属性和vendor (或odm) 属性作为trigger。

4. Public-readable

· 非system 分区的的Bin 文件只能read 这些属性和vendor (或odm) 属性;

· 非system 分区的的Bin 文件只能write vendor (或odm) 属性,不能write platform 属性。

  • System 分区的限制

System 分区的进程理论上不允许读vendor(或odm)属性,但是Android P 上也不强制(也许未来会

强制)。

System 分区的进程不允许写vendor(或 odm)属性(否则会触犯neverallow rule)。

【豁免】将想这样做的系统进程对应domain 加入system_writes_vendor_properties_violators(only

allowed in Android P):

typeattribute zygote system_writes_vendor_properties_violators;

 

  • Non-system 分区属性名称限制

对于需要在non-system 分区init rc 文件中作为action 使用的属性,需要以如下字符串作为前缀:

"init.svc.vendor.", "ro.vendor.", "persist.vendor.", "vendor.",

"init.svc.odm.", "ro.odm.", "persist.odm.", "odm.", "ro.boot."

而只是在代码中使用属性无限制。

 

  • Non-system 分区增加属性

1. 在property_contexts 文件中添加:

vendor.dynamic.id u:object_r:dynamic_id_prop:s0

2. 在property.te 文件中添加:

type dynamic_id_prop, property_type;

3. dynamic_id.te配置:

set_prop(dynamic_id, dynamic_id_prop)

上句表明dynamic_id 进程可读写vendor.dynamic.id 属性。

get_prop(dynamic_id, dynamic_id_prop)

上句表明dynamic_id 进程只可读vendor.dynamic.id 属性。

把vendor.dynamic.id 属性值追加到
PRODUCT_PROPERTY_OVERRIDES 变量后,程序中即可使用此属性。
PRODUCT_PROPERTY_OVERRIDES += vendor.dynamic.id=1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值