安卓 prop 文件

Android 系统属性 (SystemProperties)

*用于存储系统的一下属性信息,以字符串格式储存,在开机的时候在init进程中完成初始化和启动

*用来记录系统设置或进程之间的信息交换

*android分配一个共享内存区来存储的属性,属性是在整个系统中全局可见的

*每个进程可以get/set属性, set是通过向init进程发出请求,又init去完成,get可以直接读取共享内存

属性格式:

ro只读属性        ---    ro即read only这类属性通常是系统默认属性,在系统编译或初始化时设置的

persist持久属性 ---    设置persist开头的属性,断电后仍能保存,值写入data/property/persistent_properties

net属性             --- 当设置这个属性时,"net.change"属性将会自动修改,用于记录最新被修改的以net.开头的属性

普通属性            ---     设置其他格式开头的属性,断电后不能保存

添加的属性前缀必须是在system/sepolicy/private/property_contexts中被定义过的,否则无效

make android后在out/target/product/xxx/system/build.prop 可找到添加的属性

如果需要拦截setprop命令 需要在 system_property_set.cpp中进行处理

默认文件路径

/default.prop                    系统默认的属性,一般都在根文件系统目录的顶层

/system/build.prop          系统编译的属性,主要记录编译时间,编译主机,编译平台,以及dvm的信息

/system/default.prop

/data/local.prop

串口使用

getprop | grep 节点名

setprop 节点名 节点值

Java 层

import android.os.SystemProperties;

SystemProperties.get("key")

SystemProperties.get("key", true)     //bealoon

SystemProperties.set("key", value)    

SystemProperties.set("key", "true")    //bealoon

具有system权限:

在AndroidManifest.xml中,配置android:sharedUserId=“android.uid.system”

在Android.mk中,配置LOCAL_CERTIFICATE :=platform

C++ Native 层

include <cutils/properties.h>

int property_get(const char *key, char *value, const char *default_value);

int8_t property_get_bool(const char *key, int8_t default_value);

int64_t property_get_int64(const char *key, int64_t default_value);

int32_t property_get_int32(const char *key, int32_t default_value);

int property_set(const char *key, const char *value);

int property_list(void (*propfn)(const char *key, const char *value, void *cookie), void *cookie);

Android.mk或Android.bp或Makefile中需要链接libcutils库

ctl 控制属性

setprop ctl.start xxx //启动某服务

setprop ctl.stop xxx  //关闭某服务

setprop ctl.restart xxx  //重启某服务

sys.powerctl 属性可控制设备重启关机

setprop sys.powerctl shutdown //设备关机

setprop sys.powerctl reboot //设备重启

setprop sys.powerctl shutdownanim //设备关机动画;空为开机动画

添加系统默认属性

device/qcom/qssi/system.prop 和 device/qcom/kona/system.prop 中添加

这里添加的属性前缀必须是在system/sepolicy/private/property_contexts中被定义过的,否则无效;定制化前缀属性在后面定制prop属性配置中会介绍。

make android后在out/target/product/xxx/system/build.prop 或out/target/product/xxx/vendor/build.prop可找到添加的属性persist.hello.world,则说明基本添加成功,烧录img验证即可。

prop 源码介绍 Android 系统属性(SystemProperties)介绍-优快云博客


SystemProperties vs Settings DB

Settings 变量是存储在系统数据库中的配置变量,它们存储在/data/data/com.android.providers.settings/databases/settings.db 数据库中。这些变量用于存储应用程序和系统级别的偏好设置,例如语言、屏幕亮度、通知设置等等。Settings 变量可以通过 Settings API 进行读写,可以通过代码或系统设置应用程序进行访问和更改。

Prop 变量是系统属性变量,它们是存储在 /system/build.prop 文件中的键值对。Prop 变量用于存储系统级别的配置,例如设备名称、制造商名称、操作系统版本等等。Prop 变量可以通过 Android Debug Bridge (ADB) 或命令行工具(如 adb shell 或 terminal emulator)进行读写,也可以通过修改 build.prop 文件进行修改。

因此,Settings 变量和 Prop 变量在用途和存储位置上有所不同。Settings 变量用于应用程序和系统级别的偏好设置,而 Prop 变量用于系统级别的配置。Settings 变量可以通过代码或系统设置应用程序进行访问和更改,而 Prop 变量可以通过 ADB 或命令行工具进行读写和修改。


SystemProperties vs 共享内存

安卓的 SystemProperties 是一个API,用于读取或设置设备的系统属性。这些属性包括硬件配置,软件版本,网络设置等等。通过该API,应用程序可以获取或更改设备的系统属性。systemproperties是安卓平台提供的一种轻量级的数据交换方式,用于应用程序之间的通信或与系统之间的通信。

共享内存是一种机制,允许两个或多个进程共享同一块内存区域。共享内存通常用于高性能的数据交换,因为它比其他进程间通信机制(例如管道或信号量)更快。在安卓中,共享内存可以通过使用ashmem模块来实现。

在比较 SystemProperties 和共享内存的优劣时,需要注意它们的应用场景不同。SystemProperties 适用于轻量级的数据交换,例如应用程序之间的通信或与系统之间的通信,而共享内存适用于高性能的数据交换,例如图形处理或多媒体应用程序中的数据传输。同时,共享内存的实现相对复杂,需要考虑同步、互斥等问题,而 SystemProperties 则更为简单,易于使用和维护。因此,要根据具体情况选择适合的机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值