1、功能需求
安全域为hal_sensors_default的native进程进行sensor校准,然后让上层应用获得校准结果。可以通过添加HIDL接口的方式来实现,但是实现过程繁琐。最终考虑通过属性来传递校准结果。
hal_sensors_default安全域中的进程设置属性,system_app和system_server安全域中的java应用读取属性。
2、定义属性和设置属性
在 device/qcom/sepolicy/vendor/property.te 中定义一个新的属性类型
# hal_sensors
type vendor_sensor_prop, property_type;
在 device/qcom/sepolicy/vendor/property_contexts 中设置具体property的安全标签
# hal_sersors
vendor.sensor.cali. u:object_r:vendor_sensor_prop:s0
在 device/qcom/sepolicy/vendor/hal_sensors_default.te 中允许 hal_sensors_default 设置指定的属性 vendor_sensor_prop
# set prop in hal_sensors_default
set_prop(hal_sensors_default, vendor_sensor_prop)
说明:用户自定义的属性需要放在vendor目录,属性的格式也有具体的要求,如需要以 vendor. persist.vendor. 等作为属性的开头,否则影响CTS测试。
3、system_app安全域读取属性
在 device/qcom/sepolicy/vendor/system_app.te 中允许 system_app 域可以读取指定的属性 vendor_sensor_prop
# hal_sersors
get_prop(system_app, vendor_sensor_prop)
在 device/qcom/sepolicy/vendor/system_server.te 中允许 system_server 域可以读取指定的属性
# hal_sensors
get_prop(system_server, vendor_sensor_prop)
说明:system_app和system_server安全域都是定义在public目录下的域,所以可以在vendor目录中添加相关的策略。