如何增加属性
Android P 对属性配置有很严格的要求,不建议增加system 分区内的属性,建议增加的属性都在nonsystem分区。
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 分区的进程理论上不允许读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 分区init rc 文件中作为action 使用的属性,需要以如下字符串作为前缀:
"init.svc.vendor.", "ro.vendor.", "persist.vendor.", "vendor.",
"init.svc.odm.", "ro.odm.", "persist.odm.", "odm.", "ro.boot."
而只是在代码中使用属性无限制。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)