系统属性:就是在整个Android系统中都是可以调用的属性,比如我们某个功能,在fw层和c层都有改动,我们需要用一个变量去控制这个功能是否启用和关闭,这就需要用到全局的系统属性;
/system/build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变。这个文件是如何生成的呢?
build/tools/buildinfo.sh 脚本就是专门用于生成build.prop文件,
build/core/Makefile中使用build/tools/buildinfo.sh 脚本生成build.prop文件,所以我们要添加系统属性,主要就是在buildinfo.sh、Makefile和version_defaults.mk中
记录一下我新增系统属性的流程:
1、需求:公司领导让我新增一个功能,这个功能在fw层和c层都有改动,然后需要控制这个功能的启动和关闭(每次编译都去删除代码这肯定不太现实),所以需要加一个系统属性,每次编译修改这个系统属性就行
2、首先我们需要在/build/core/version_defaults.mk中增加字段,
TARGET_CONFIGURE := false
然后需要在build/tools/buildinfo.sh中增加
echo "ro.product.configure=$TARGET_CONFIGURE"
最后需要在build/core/Makefile中添加
TARGET_CONFIGURE="$(TARGET_CONFIGURE)"
最后编译,编译完成后就会在 /out/target/product/<product>/system/build.prop中出现加入的ro.product.configure属性,
如果需要修改属性的值,只需要更改/build/core/version_defaults.mk即可
使用:我们定义了系统属性,肯定是需要调用在fw层调用的方法是:
getString("ro.product.configure")
在C层调用的方法是:
property_get("ro.product.configure", value, "") 注:value是接收的字段
在adb获取系统属性的方法是:
adb shell getprop //获取系统全部属性
adb shell getprop "ro.product.configure" //获取某个属性
adb shell setprop "ro.product.configure" "12" //设置某个属性的值 ro开头的为只读属性,不可设置
由于我刚接触系统层源码,可能还处于比较菜的地步,如果有错误的地方,麻烦大佬指点下,感谢感谢........