您的位置:首页 > 科技 > 能源 > 中国石油第一建设公司官网_珠海专门做网站_肇庆网站建设_必应搜索引擎国际版

中国石油第一建设公司官网_珠海专门做网站_肇庆网站建设_必应搜索引擎国际版

2025/4/19 5:46:59 来源:https://blog.csdn.net/nysin/article/details/146909479  浏览:    关键词:中国石油第一建设公司官网_珠海专门做网站_肇庆网站建设_必应搜索引擎国际版
中国石油第一建设公司官网_珠海专门做网站_肇庆网站建设_必应搜索引擎国际版

aosp开发中,遇到从上层做开关,hal层做判断的需要,比如控制摄像头使用。这时候就需要找一个属性可以在java和c c++ 层同时操作的属性,系统学习了下属性存储,在此记录!

1. 什么是 SystemProperties

SystemProperties 是 Android 系统提供的一种键值对存储机制,用于管理全局配置属性。这些属性通常用于控制系统行为、硬件功能或调试选项。它们在系统启动时由 init 进程加载,并在运行时可被修改(视权限而定)。

  • 存储位置: 属性通常存储在内存中,部分持久化属性(如以 persist. 开头的)会保存到文件中(例如 /data/property/)。
  • 访问方式: 提供 Java 和 C/C++ 两种 API,分别用于应用层和原生层。
  • 权限: 系统属性分为只读和读写属性,修改通常需要系统权限(root 或 system 用户)。

2. Java 层:SystemProperties 类

2.1 原理

在 Java 层,SystemProperties 是 Android SDK 提供的一个工具类,位于 android.os.SystemProperties 包中。它通过 JNI(Java Native Interface)调用底层的 C/C++ 属性服务(property_service),间接与 Android 的属性系统交互。

  • 底层实现: 调用 libandroid_runtime.so 中的 native 方法,最终映射到 libcutils 的 property_get 和 property_set 函数。
  • 权限限制: 在普通应用中,SystemProperties.set 可能因权限不足而失败,通常需要系统签名或运行在系统进程中。

2.2 API

  • 读取: SystemProperties.get(String key, String def)
    • key: 属性名。
    • def: 默认值(若属性不存在则返回)。
    • 返回: 属性值的字符串。
  • 写入: SystemProperties.set(String key, String value)
    • key: 属性名。
    • value: 要设置的值。

2.3 示例代码

import android.os.SystemProperties;public 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com