怎么在Android系统中增加系统属性?

本文介绍了如何在Android系统中添加和使用全局系统属性,包括在/build/core/version_defaults.mk中增加字段,修改build/tools/buildinfo.sh和build/core/Makefile,以及系统属性在FW层和C层的调用方法。通过adb可以获取和设置系统属性,实现功能的开启和关闭。

        系统属性:就是在整个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开头的为只读属性,不可设置

由于我刚接触系统层源码,可能还处于比较菜的地步,如果有错误的地方,麻烦大佬指点下,感谢感谢........

        

### 如何在 Android 11 中添加或修改系统属性 #### 使用 Java 代码操作 为了在应用程序中获取或设置系统属性,可以利用 `SystemProperties` 类。此方法适用于读取和写入特定键值对形式的系统配置项。 ```java import android.os.SystemProperties; // 获取指定 key 的系统属性,默认返回 def_value 如果未找到该 key 对应的值 String value = SystemProperties.get("key", "def_value"); // 设置新的 system 属性 SystemProperties.set("key", "value"); ``` 需要注意的是,上述方式仅限于具有适当权限的应用程序调用[^1]。由于安全性和稳定性考虑,普通应用无法随意更改重要的系统参数;通常这些接口由设备制造商或者经过授权的服务使用。 #### 修改 build.prop 文件 另一种常见的做法是在启动过程中通过编辑 `/system/build.prop` 文件来定义额外的静态属性。不过这种方法一般只用于开发调试环境或是ROM定制者,在正式发布的版本里不推荐这样做因为这可能会引起兼容性问题以及违反Google的安全政策。 要永久保存自定义属性,则需确保编译阶段就把它们加入到最终镜像当中去。具体来说就是在 AOSP (Android Open Source Project) 源码树下的合适位置创建相应的 `.prop` 配置文件并调整 Makefile 来包含新条目。 对于希望动态改变某些行为而不影响其他组件的情况下,还可以采用 Environment 变量的形式传递给子进程继承使用,但这同样依赖于具体的业务场景设计。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值