架构图
- Android系统一启动就会从若干属性脚本文件中加载属性内容
- Android系统中的所有属性(key/value)会存入同一块共享内存中
- 系统中的各个进程会将这块共享内存映射到自己的内存空间,这样就可以直接读取属性内容了
- 系统中只有一个实体可以设置、修改属性值,它就是属性系统(init进程)
- 不同进程只可以通过sockeet方式,向属性系统(init进程)发出修改,而不能直接修改属性值
- 共享内存中的键值内容会以一种字典树的形式进行组织。
代码
main.cpp
/system/core/init/main.cpp
using namespace android::init;
int main(int argc, char** argv) {
if (!strcmp(basename(argv[0]), "ueventd")) {
return ueventd_main(argc, argv);
}
if (argc > 1) {
if (!strcmp(argv[1], "subcontext")) {
android::base::InitLogging(argv, &android::base::KernelLogger);
const BuiltinFunctionMap& function_map = GetBuiltinFunctionMap();
return SubcontextMain(argc, argv, &function_map);
}
if (!strcmp(argv[1], "selinux_setup")) {
return SetupSelinux(argv);
}
if (!strcmp(argv[1], "second_stage")) {
return SecondStageMain(argc, argv); // property is here
}
}
return FirstStageMain(argc, argv);
}
init.cpp
/system/core/init/init.cpp
int SecondStageMain(int argc, char** argv) {
// 属性系统初始化
PropertyInit();
// 启动属性服务
StartPropertyService(&property_fd);
}
property_service.cpp
/system/core/init/property_service.cpp
void PropertyInit() {
// 创建/dev/__properties__设备文件
mkdir("/dev/__properties__", S_IRWXU | S_IXGRP | S_IXOTH);
// 创建和初始化属性的共享内存空间,将/dev/__properties__设备文件映射到共享内存
if (__system_property_area_init()) {
LOG(FATAL) << "Failed to initialize property area";
}
// 初始化系统已有属性值
PropertyLoadBootDefaults();
}
// 加载属性值
void PropertyLoadBootDefaults() {
// TODO(b/117892318): merge prop.default and build.prop files into one
// We read the properties and their values into a map, in order to always allow properties
// loaded in the later property files to override the properties in loaded in the earlier
// property files, regardless of if they are "ro." properties or not.
std::map<std::string, std::string> properties;
if (!load_properties_from_file("/system/etc/prop.default", nullptr, &properties)) {
// Try recovery path
if (!load_properties_from_file("/prop.default", nullptr, &properties)) {
// Try legacy path
load_properties_from_file("/default.prop", nullptr, &properties);
}
}
load_properties_from_file("/system/build.prop", nullptr, &properties);
load_properties_from_file("/system_ext/build.prop", nullptr, &properties);
load_properties_from_file("/vendor/default.prop", nullptr, &properties);
load_properties_from_file("/vendor/build.prop", nullptr, &properties);
if (SelinuxGetVendorAndroidVersion() >= __ANDROID_API_Q__) {
load_properties_from_file("/odm/etc/build.prop", nullptr, &properties);
} else {
load_properties_from_file("/odm/default.prop", nullptr, &properties);
load_properties_from_file("/odm/build.prop", nullptr, &properties);
}
load_properties_from_file("/product/build.prop", nullptr, &properties);
load_properties_from_file("/factory/factory.prop", "ro.*", &properties);
if (access(kDebugRamdiskProp, R_OK) == 0) {
LOG(INFO) << "Loading " << kDebugRamdiskProp;
load_properties_from_file(kDebugRamdiskProp, nullptr, &properties);
}
for (const auto& [name, value] : properties) {
std::string error;
if (PropertySet(name, value, &error) != PROP_SUCCESS) {
LOG(ERROR) << "Could not set '" << name << "' to '" << value
<< "' while loading .prop files" << error;
}
}
property_initialize_ro_product_props();
property_derive_build_props();
update_sys_usb_config();
}
// persist.sys.usb.config values can't be combined on build-time when property
// files are split into each partition.
// So we need to apply the same rule of build/make/tools/post_process_props.py
// on runtime.
static void update_sys_usb_config() {
bool is_debuggable = android::base::GetBoolProperty("ro.debuggable", false);
std::string config = android::base::GetProperty("persist.sys.usb.config", "");
// b/150130503, add (config == "none") condition here to prevent appending
// ",adb" if "none" is explicitly defined in default prop.
if (config.empty() || config == "none") {
InitPropertySet("persist.sys.usb.config", is_debuggable ? "adb" : "none");
} else if (is_debuggable && config.find("adb") == std::string::npos &&
config.length() + 4 < PROP_VALUE_MAX) {
config.append(",adb");
InitPropertySet("persist.sys.usb.config", config);
}
}
void StartPropertyService(int* epoll_socket) {
InitPropertySet("ro.property_service.version", "2");
int sockets[2];
if (socketpair(AF_UNIX, SOCK_SEQPACKET | SOCK_CLOEXEC, 0, sockets) != 0) {
PLOG(FATAL) << "Failed to socketpair() between property_service and init";
}
*epoll_socket = from_init_socket = sockets[0];
init_socket = sockets[1];
StartSendingMessages();
// 创建一个socket, 并将该socket与 dev/socket/property_service设备文件绑定
if (auto result = CreateSocket(PROP_SERVICE_NAME, SOCK_STREAM | SOCK_CLOEXEC | SOCK_NONBLOCK,
false, 0666, 0, 0, {});
result.ok()) {
property_set_fd = *result;
} else {
LOG(FATAL) << "start_property_service socket creation failed: " << result.error();
}
listen(property_set_fd, 8);
auto new_thread = std::thread{PropertyServiceThread};
property_service_thread.swap(new_thread);
}
/dev/socket/property_service
qssi:/ # netstat -apn
unix 2 [ ACC ] STREAM LISTENING 19757 1/init /dev/socket/property_service
dev/properties
qssi:/ # ls -al dev/__properties__/
total 1220
drwx--x--x 2 root root 5220 1970-01-04 05:23 .
drwxr-xr-x 26 root root 3960 2020-12-21 11:03 ..
-r--r--r-- 1 root root 131072 1970-01-04 05:23 properties_serial
-r--r--r-- 1 root root 60948 1970-01-04 05:23 property_info // 将加载属性信息到内存
-r--r--r-- 1 root root 131072 1970-01-04 05:23 u:object_r:adbd_prop:s0
-r--r--r-- 1 root root 131072 1970-01-04 05:23 u:object_r:apexd_prop:s0
-r--r--r-- 1 root root 131072 1970-01-04 05:23 u:object_r:apk_verity_prop:s0
-r--r--r-- 1 root root 131072 1970-01-04 05:23 u:object_r:audio_prop:s0
...
...
系统属性设置
SystemProperties
./frameworks/base/core/java/android/os/SystemProperties.java
public class SystemProperties {
@FastNative
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
private static native String native_get(String key, String def);
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
private static native void native_set(String key, String def);
}
android_os_SystemProperties.cpp
./frameworks/base/core/jni/android_os_SystemProperties.cpp
template<typename Functor>
void ReadProperty(JNIEnv* env, jstring keyJ, Functor&& functor)
{
ScopedUtfChars key(env, keyJ);
if (!key.c_str()) {
return;
}
#if defined(__BIONIC__)
const prop_info* prop = __system_property_find(key.c_str()); // 读取系统属性
if (!prop) {
return;
}
ReadProperty(prop, std::forward<Functor>(functor));
#else
std::forward<Functor>(functor)(
android::base::GetProperty(key.c_str(), "").c_str());
#endif
}
// 获取属性
jstring SystemProperties_getSS(JNIEnv* env, jclass clazz, jstring keyJ,
jstring defJ)
{
jstring ret = defJ;
ReadProperty(env, keyJ, [&](const char* value) {
if (value[0]) {
ret = env->NewStringUTF(value);
}
});
if (ret == nullptr && !env->ExceptionCheck()) {
ret = env->NewStringUTF(""); // Legacy behavior
}
return ret;
}
// 设置属性
void SystemProperties_set(JNIEnv *env, jobject clazz, jstring keyJ,
jstring valJ)
{
ScopedUtfChars key(env, keyJ);
if (!key.c_str()) {
return;
}
std::optional<ScopedUtfChars> value;
if (valJ != nullptr) {
value.emplace(env, valJ);
if (!value->c_str()) {
return;
}
}
bool success;
#if defined(__BIONIC__)
success = !__system_property_set(key.c_str(), value ? value->c_str() : ""); // 设置系统属性
#else
success = android::base::SetProperty(key.c_str(), value ? value->c_str() : "");
#endif
if (!success) {
jniThrowException(env, "java/lang/RuntimeException",
"failed to set system property (check logcat for reason)");
}
}
int register_android_os_SystemProperties(JNIEnv *env)
{
const JNINativeMethod method_table[] = {
{ "native_get",
"(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
(void*) SystemProperties_getSS },
{ "native_set", "(Ljava/lang/String;Ljava/lang/String;)V",
(void*) SystemProperties_set },
};
return RegisterMethodsOrDie(env, "android/os/SystemProperties",
method_table, NELEM(method_table));
}
system_properties.cpp
bionic/libc/include/sys/system_properties.h
#define PROP_VALUE_MAX 92
/*
* Sets system property `name` to `value`, creating the system property if it doesn't already exist.
*/
int __system_property_set(const char* __name, const char* __value);
/*
* Returns a `prop_info` corresponding system property `name`, or nullptr if it doesn't exist.
* Use __system_property_read_callback to query the current value.
*
* Property lookup is expensive, so it can be useful to cache the result of this function.
*/
const prop_info* __system_property_find(const char* __name);
init maps
加载init 进程空间的各种文件
qssi:/ # showmap 1
virtual shared shared private private
size RSS PSS clean dirty clean dirty swap swapPSS # object
-------- -------- -------- -------- -------- -------- -------- -------- -------- ---- ------------------------------
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/properties_serial
120 120 0 0 120 0 0 0 0 2 /dev/__properties__/property_info
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:adbd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:apexd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:apk_verity_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:audio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:binder_cache_bluetooth_server_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:binder_cache_system_server_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:binder_cache_telephony_server_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:bluetooth_a2dp_offload_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:bluetooth_audio_hal_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:bluetooth_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:bootloader_boot_reason_prop:s0
128 20 14 0 12 0 8 0 0 1 /dev/__properties__/u:object_r:boottime_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:boottime_public_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:bpf_progs_loaded_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:bq_config_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:charger_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:cold_boot_done_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:config_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:cppreopt_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:cpu_variant_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_adbd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_apexd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_bootanim_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_bugreport_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_console_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_dpmd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_dumpstate_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_fuse_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_gsid_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_interface_restart_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_interface_start_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_interface_stop_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_mdnsd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_restart_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_rildaemon_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_sigstop_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_start_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ctl_stop_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:dalvik_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:debug_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:debuggerd_prop:s0
128 40 0 0 40 0 0 0 0 1 /dev/__properties__/u:object_r:default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_activity_manager_native_boot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_boot_count_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_configuration_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_input_native_boot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_media_native_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_netd_native_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_reset_performed_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_runtime_native_boot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_runtime_native_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_storage_native_boot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_sys_traced_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_config_window_manager_native_boot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:device_logging_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:dhcp_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:dumpstate_options_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:dumpstate_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:dynamic_system_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported2_config_prop:s0
128 12 0 0 12 0 0 0 0 1 /dev/__properties__/u:object_r:exported2_default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported2_radio_prop:s0
128 4 1 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:exported2_system_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported2_vold_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:exported3_default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported3_radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported3_system_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_audio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_bluetooth_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_camera_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:exported_config_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_dalvik_prop:s0
128 12 0 0 12 0 0 0 0 1 /dev/__properties__/u:object_r:exported_default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_dumpstate_prop:s0
128 4 4 0 0 0 4 0 0 1 /dev/__properties__/u:object_r:exported_ffs_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_fingerprint_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_overlay_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_pm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_secure_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_system_prop:s0
128 4 1 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:exported_system_radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_vold_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:exported_wifi_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:fastbootd_protocol_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ffs_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:fingerprint_prop:s0
128 4 2 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:firstboot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:graphics_config_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:gsid_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:heapprofd_enabled_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:heapprofd_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:hwservicemanager_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:incremental_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:init_perf_lsm_hooks_prop:s0
128 16 16 0 0 0 16 0 0 1 /dev/__properties__/u:object_r:init_svc_debug_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:last_boot_reason_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:llkd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:lmkd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:log_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:log_tag_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:logd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:logpersistd_logging_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:lowpan_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:lpdumpd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:media_variant_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:mmc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:mock_ota_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:module_sdkextensions_prop:s0
128 4 4 0 0 0 4 0 0 1 /dev/__properties__/u:object_r:net_dns_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:net_radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:netd_stable_secret_prop:s0
128 4 4 0 0 0 4 0 0 1 /dev/__properties__/u:object_r:nfc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:nnapi_ext_deny_product_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:ota_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:overlay_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:pan_result_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:persist_debug_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:persistent_properties_ready_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:pm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:powerctl_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:rebootescrow_hal_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:restorecon_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:safemode_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:serialno_prop:s0
128 4 2 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:shell_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:socket_hook_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:storage_config_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:surfaceflinger_display_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:system_adbd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:system_boot_reason_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:system_jvmti_agent_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:system_lmk_prop:s0
128 8 0 0 8 0 0 0 0 1 /dev/__properties__/u:object_r:system_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:system_radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:system_trace_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:test_boot_reason_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:test_harness_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:theme_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:time_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:traced_enabled_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:traced_lazy_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:traced_perf_enabled_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:use_memfd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:userspace_reboot_config_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:userspace_reboot_exported_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:userspace_reboot_log_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:userspace_reboot_test_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vehicle_hal_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_adsprpc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_alarm_boot_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_audio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_bluetooth_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_boot_mode_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_bservice_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_camera_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_cap_configstore_dbg_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_cgroup_follow_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_cnd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_cnd_vendor_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_console_log_level_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_core_ctl_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_crash_cnt_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_crash_detect_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_netmgrd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_port-bridge_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_qcrild_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_qmuxd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_vendor_hbtp_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_vendor_imsrcsservice_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_vendor_mmid_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_vendor_rmt_storage_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ctl_vendor_wigigsvc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_data_ko_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_data_qmipriod_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_data_shsusr_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_dataadpl_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_dataqdp_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_dataqti_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_dbg_brkpoint_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_dcvs_prop:s0
128 16 4 0 16 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_disable_spu_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_display_notch_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_display_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_exported_odm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_exported_system_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_fst_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_gpu_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_gralloc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_hvdcp_opti_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ims_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_iop_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ipacm-diag_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ipacm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_km_strongbox_version_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_location_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_mdm_helper_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_mm_osal_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_mm_parser_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_mm_video_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_mmi_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_modem_diag_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_mpctl_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_msm_irqbalance_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_myapp_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_nfc_nq_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_nfc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_pd_locater_dbg_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_per_mgr_state_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_persist_camera_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_persist_dpm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_public_vendor_default_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qcc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qdcmss_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qspm_dbg_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qspm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qvr_persist_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qvr_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qvrd_persist_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_qvrd_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_radio_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ramdump_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_reschedule_service_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_scroll_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_security_patch_level_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_sensors_dbg_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_sensors_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_slm_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_soc_id_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_soc_name_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_socket_hook_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_spcomlib_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_ssr_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_sxr_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_sys_video_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_system_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_tee_listener_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_time_service_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_usb_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_video_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wfd_service_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wfd_sys_debug_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wfd_vendor_debug_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wifi_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wifi_version:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wigig_core_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wigig_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_wlc_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vendor_xlat_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:virtual_ab_prop:s0
128 4 0 0 4 0 0 0 0 1 /dev/__properties__/u:object_r:vndk_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:vold_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:wifi_log_prop:s0
128 0 0 0 0 0 0 0 0 1 /dev/__properties__/u:object_r:wifi_prop:s0
4 4 0 0 4 0 0 0 0 1 /dev/cgroup_info/cgroup.rc
952 140 91 72 0 64 4 32 32 4 /system/bin/bootstrap/linker64
984 928 579 644 0 280 4 0 0 4 /system/bin/init
756 576 246 516 0 56 4 4 4 4 /system/lib64/bootstrap/libc.so
12 4 2 4 0 0 0 4 4 3 /system/lib64/bootstrap/libdl.so
12 0 0 0 0 0 0 4 4 3 /system/lib64/bootstrap/libdl_android.so
220 0 0 0 0 0 0 8 8 4 /system/lib64/bootstrap/libm.so
156 0 0 0 0 0 0 16 16 4 /system/lib64/libbacktrace.so
244 180 9 172 0 8 0 0 0 4 /system/lib64/libbase.so
92 0 0 0 0 0 0 8 8 4 /system/lib64/libbootloader_message.so
688 600 18 584 0 16 0 16 16 4 /system/lib64/libc++.so
20 12 4 8 0 4 0 4 4 4 /system/lib64/libcgrouprc.so
1096 0 0 0 0 0 0 68 68 6 /system/lib64/libcrypto.so
12 0 0 0 0 0 0 4 4 3 /system/lib64/libcrypto_utils.so
72 60 0 60 0 0 0 12 12 4 /system/lib64/libcutils.so
20 0 0 0 0 0 0 8 8 4 /system/lib64/libdexfile_support.so
24 0 0 0 0 0 0 8 8 4 /system/lib64/libext2_uuid.so
20 0 0 0 0 0 0 8 8 4 /system/lib64/libext4_utils.so
88 0 0 0 0 0 0 8 8 4 /system/lib64/libfec.so
516 0 0 0 0 0 0 16 16 4 /system/lib64/libfs_mgr.so
16 0 0 0 0 0 0 4 4 3 /system/lib64/libgsi.so
56 0 0 0 0 0 0 4 4 3 /system/lib64/libhidl-gen-utils.so
124 0 0 0 0 0 0 4 4 3 /system/lib64/libjsoncpp.so
12 0 0 0 0 0 0 4 4 3 /system/lib64/libkeyutils.so
72 72 8 64 0 4 4 0 0 4 /system/lib64/liblog.so
24 0 0 0 0 0 0 8 8 4 /system/lib64/liblogwrap.so
160 0 0 0 0 0 0 8 8 4 /system/lib64/liblp.so
152 0 0 0 0 0 0 8 8 4 /system/lib64/liblzma.so
36 36 8 28 0 8 0 0 0 4 /system/lib64/libnetd_client.so
12 0 0 0 0 0 0 4 4 3 /system/lib64/libpackagelistparser.so
320 204 48 200 0 4 0 4 4 4 /system/lib64/libpcre2.so
252 252 14 240 0 12 0 0 0 4 /system/lib64/libprocessgroup.so
28 0 0 0 0 0 0 4 4 3 /system/lib64/libprocessgroup_setup.so
100 100 9 92 0 4 4 0 0 4 /system/lib64/libselinux.so
40 0 0 0 0 0 0 8 8 4 /system/lib64/libsparse.so
12 0 0 0 0 0 0 4 4 3 /system/lib64/libsquashfs_utils.so
444 0 0 0 0 0 0 24 24 4 /system/lib64/libunwindstack.so
120 108 0 108 0 0 0 8 8 4 /system/lib64/libutils.so
16 4 0 4 0 0 0 8 8 4 /system/lib64/libvndksupport.so
92 0 0 0 0 0 0 8 8 4 /system/lib64/libz.so
4 0 0 0 0 0 0 0 0 1 /vendor/etc/passwd
244 96 96 0 0 16 80 48 48 12 [anon:.bss]
12 8 8 0 0 8 0 4 4 1 [anon:System property context nodes]
8 0 0 0 0 0 0 8 8 2 [anon:arc4random data]
8 0 0 0 0 0 0 8 8 2 [anon:atexit handlers]
36 0 0 0 0 0 0 36 36 6 [anon:bionic_alloc_small_objects]
2097152 4 4 0 0 4 0 4 4 5 [anon:cfi shadow]
1200 0 0 0 0 0 0 36 36 3 [anon:linker_alloc]
11008 1188 1188 0 0 776 412 3412 3412 37 [anon:scudo:primary]
1008 20 20 0 0 0 20 4 4 1 [anon:stack_and_tls:476]
16 8 8 0 0 4 4 8 8 1 [anon:stack_and_tls:main]
64 0 0 0 0 0 0 0 0 2 [anon:thread signal stack]
10245444 0 0 0 0 0 0 0 0 52 [anon]
132 24 24 0 0 4 20 96 96 1 [stack]
4 4 0 4 0 0 0 0 0 1 [vdso]
4 4 0 4 0 0 0 0 0 1 [vvar]
-------- -------- -------- -------- -------- -------- -------- -------- -------- ---- ------------------------------
virtual shared shared private private
size RSS PSS clean dirty clean dirty swap swapPSS # object
-------- -------- -------- -------- -------- -------- -------- -------- -------- ---- ------------------------------
12397564 4956 2436 2804 288 1272 592 4004 4004 537 TOTAL
属性命名规范
adnroid 4.4
system/core/init/property_service.c
/* White list of permissions for setting property services. */
struct {
const char *prefix;
unsigned int uid;
unsigned int gid;
} property_perms[] = {
{ "net.rmnet0.", AID_RADIO, 0 },
{ "net.gprs.", AID_RADIO, 0 },
{ "net.ppp", AID_RADIO, 0 },
{ "net.qmi", AID_RADIO, 0 },
{ "net.lte", AID_RADIO, 0 },
{ "net.cdma", AID_RADIO, 0 },
{ "ril.", AID_RADIO, 0 },
{ "gsm.", AID_RADIO, 0 },
{ "persist.radio", AID_RADIO, 0 },
{ "net.dns", AID_RADIO, 0 },
{ "sys.usb.config", AID_RADIO, 0 },
{ "net.", AID_SYSTEM, 0 },
{ "dev.", AID_SYSTEM, 0 },
{ "runtime.", AID_SYSTEM, 0 },
{ "hw.", AID_SYSTEM, 0 },
{ "sys.", AID_SYSTEM, 0 },
{ "sys.powerctl", AID_SHELL, 0 },
{ "service.", AID_SYSTEM, 0 },
{ "wlan.", AID_SYSTEM, 0 },
{ "bluetooth.", AID_BLUETOOTH, 0 },
{ "dhcp.", AID_SYSTEM, 0 },
{ "dhcp.", AID_DHCP, 0 },
{ "debug.", AID_SYSTEM, 0 },
{ "debug.", AID_SHELL, 0 },
{ "log.", AID_SHELL, 0 },
{ "service.adb.root", AID_SHELL, 0 },
{ "service.adb.tcp.port", AID_SHELL, 0 },
{ "persist.sys.", AID_SYSTEM, 0 },
{ "persist.service.", AID_SYSTEM, 0 },
{ "persist.security.", AID_SYSTEM, 0 },
{ "persist.service.bdroid.", AID_BLUETOOTH, 0 },
{ "selinux." , AID_SYSTEM, 0 },
{ "wfd.enable", AID_MEDIA, 0 },
{ NULL, 0, 0 }
};
android 5.0以上
external/sepolicy/property_contexts
system/sepolicy/property_contexts
##########################
# property service keys
#
#
net.rmnet u:object_r:net_radio_prop:s0
net.gprs u:object_r:net_radio_prop:s0
net.ppp u:object_r:net_radio_prop:s0
net.qmi u:object_r:net_radio_prop:s0
net.lte u:object_r:net_radio_prop:s0
net.cdma u:object_r:net_radio_prop:s0
net.dns u:object_r:net_radio_prop:s0
sys.usb.config u:object_r:system_radio_prop:s0
ril. u:object_r:radio_prop:s0
gsm. u:object_r:radio_prop:s0
persist.radio u:object_r:radio_prop:s0
net. u:object_r:system_prop:s0
dev. u:object_r:system_prop:s0
runtime. u:object_r:system_prop:s0
hw. u:object_r:system_prop:s0
sys. u:object_r:system_prop:s0
sys.powerctl u:object_r:powerctl_prop:s0
sys.usb.ffs. u:object_r:ffs_prop:s0
service. u:object_r:system_prop:s0
wlan. u:object_r:system_prop:s0
dhcp. u:object_r:dhcp_prop:s0
dhcp.bt-pan.result u:object_r:pan_result_prop:s0
bluetooth. u:object_r:bluetooth_prop:s0
debug. u:object_r:debug_prop:s0
debug.db. u:object_r:debuggerd_prop:s0
log. u:object_r:shell_prop:s0
service.adb.root u:object_r:shell_prop:s0
service.adb.tcp.port u:object_r:shell_prop:s0
persist.audio. u:object_r:audio_prop:s0
persist.logd. u:object_r:logd_prop:s0
persist.sys. u:object_r:system_prop:s0
persist.service. u:object_r:system_prop:s0
persist.service.bdroid. u:object_r:bluetooth_prop:s0
persist.security. u:object_r:system_prop:s0
# selinux non-persistent properties
selinux.restorecon_recursive u:object_r:restorecon_prop:s0
selinux. u:object_r:security_prop:s0
# default property context
* u:object_r:default_prop:s0
# data partition encryption properties
vold. u:object_r:vold_prop:s0
crypto. u:object_r:vold_prop:s0
# ro.build.fingerprint is either set in /system/build.prop, or is
# set at runtime by system_server.
build.fingerprint u:object_r:fingerprint_prop:s0
# ctl properties
ctl.bootanim u:object_r:ctl_bootanim_prop:s0
ctl.dumpstate u:object_r:ctl_dumpstate_prop:s0