系统开机会加载build.prop 属性到系统中,这样方便系统使用 getprop 获取系统属性的值 ,
正常情况下在源码中按照如下方式添加
device/qcom/msmxxx/system.prop
添加
my.adb.myroot=0
但是我们为了保险起见,比如说机器的唯一标识,如果system.prop下面有可能会随着版本升级被修改,这样会带来一系列的问题,最好的方式就是放在/cache/文件加下,这样系统重启或者系统从重置都不会收到影响,那么我们如何将我们放到/cache的文件属性读取到系统中,可以通过getprop 的命令进行获取那?
查看7.1的源码发现系统属性的起始位置是 init.c文件main函数中调用start_property_service()
之后调用到property_service.cpp 中 load_system_props ,在 load_system_props 方法中可以看到 load_properties_from_file读取各种属性
PROP_PATH_SYSTEM_BUILD 是 /system/build.prop
PROP_PATH_VENDOR_BUILD 是/system/default.prop
PROP_PATH_FACTORY 是 /data/local.prop
void load_system_props() {
load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL);
load_properties_from_file(PROP_PATH_VENDOR_BUILD, NULL);
load_properties_from_file(PROP_PATH_FACTORY, "ro.*");
load_recovery_id_prop();
}
因此我们在/cache/文件夹创建 /cache/test.bo 即可
diff --git a/core/init/property_service.cpp b/core/init/property_service.cpp
--- a/core/init/property_service.cpp
+++ b/core/init/property_service.cpp
@@ -58,6 +58,7 @@
#define PERSISTENT_PROPERTY_DIR "/data/property"
#define FSTAB_PREFIX "/fstab."
#define RECOVERY_MOUNT_POINT "/recovery"
+#define PROP_PATH_MYTEST_BO "/cache/test.bo"
static int persistent_properties_loaded = 0;
@@ -520,6 +521,7 @@
void load_system_props() {
load_properties_from_file(PROP_PATH_SYSTEM_BUILD, NULL);
load_properties_from_file(PROP_PATH_VENDOR_BUILD, NULL);
+ load_properties_from_file(PROP_PATH_MYTEST_BO, NULL);
load_properties_from_file(PROP_PATH_FACTORY, "ro.*");
load_recovery_id_prop();
}