Android中Property模块的键值设置
发布时间 - 2026-01-11 00:21:23 点击率:次Android中Property模块的键值设置

Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键值,例如:
ro.product.locale.language=en
“Ro.product.locale.language”表示本产品本地语言,表示该条信息的名字,“en”表示该条信息的取值为英文,这样任何一个应用程序就知道本机使用的语言情况。在接口设计时也需要有两个参数,name和value(键名和键值),方法有set和get,例如:
Set(String name,String value); String Get(String name);
当然,无论上层怎么设计,在C底层键名name和键值value都是以char数组进行保存的,因为设计者并不知道传入name和value的数据大小。
在android.os.SystemProperties类中对prop模块进行了封装,该类使用Set和Get直接进行设置和获取,当然这些java接口最终还是调用系统接口完成的。在jni层有一个property_service.c文件,文件中有对应的实际处理接口,这些接口即可以给java调用,也可以一些系统命令使用(例如setprop和getprop命令就是调用这些接口方法)。SystemProperties类中的get方法没有什么限制,但是set方法就有权限的限制,应用程序是不能随便使用set接口的。
SystemProperties类的访问必须要有系统权限,并且应用的uid必须是系统id:1000或者为root:0。因为set和get操作不同,set时该操作建立了一个socket管道通过发cmd出去完成的,服务端接收cmd同时比较权限,关键代码如下:
if (uid == AID_SYSTEM || uid == AID_ROOT) return check_control_mac_perms(name, sctx);
只有权限是AID_SYSTEM(系统ID)和AID_ROOT(root用户ID)才能通过验证;而get没有权限检查,不过试想也正常,如果谁都能进行修改,那这黑客也太好当了。当然个人觉得,对于set的设计使用权限验证无可厚非,但对于查看系统属性这样的功能(get),应该还可以进行细分,比如有些属性是不重要的,任何进程和用户都可以读取使用;当然有些敏感的数据在指定读取权限时也可以进行指定(由于时间有限本人没有更深入的细读,也不知道android系统是否完成了这些功能)。
设置键值名时需要注意的地方
在进行设置时,包含两个参数,变量名和变量值,形如:[[key]]: [[value]]。如果原来没有对应的key值,那么就会在该模块中创建一个新的键值,否则覆盖原有键值。对于键值名在设计时最好按规范书写,比如“类名.模块.用途”,这样清晰可记而且不容易冲突。另外,如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。这个判断动作是在property_service.c中的property_set函数中完成的:
if(!strncmp(name, "ro.", 3)) return -1;
如果是以“persist.”开头,当设置这个属性时,其值也将写入/data/property/目录中,键值名就是该属性名,下次开机重新加载和读取该属性;该文件中的load_persistent_properties函数就是用来完成该功能。特别的属性名以“net.change”开头那么其值中必须以“net.”开头,例如键值名为[net.change]: 那么键值为[net.qtaguid_enabled],这个设置目前还没想到有什么作用。
Shell中对应的prop操作命令
在android的shell中也有对应的命令进行操作,有如下三个命令:
- getprop [keyname] Keyname为需要获取的键值名,如果没有参数则打印全部的键值信息。
- setprop [keyname] [value] Keyname为需要获取的键值名,value为设置的值,这个值为字符串。
- watchprops 监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来。
在init.rc中也使用setprop来设置一些属性状态。
补充setprop:
Property模块的键值设置
Prop模块是保存少量的全局共享信息,其保存的数据具有信息量少,跨进程共享数据等特性;每一条信息包含两个属性,键名和键名对应的键值。“Ro.product.locale.language”表示本产品本地语言,表示该条信息的名字,“en”表示该条信息的取值为英文,这样任何一个应用程序就知道本机使用的语言情况。
Android终端属性prop操作的底层实现
在init.c文件中main函数中会调用start_property_service(),而它分别调用load_properties_from_file函数读取PROP_PATH_SYSTEM_BUILD(/system/build.prop)、PROP_PATH_SYSTEM_DEFAULT(/system/default.prop)和PROP_PATH_LOCAL_OVERRIDE(/data/local.prop)存放系统属性的文件并设置到系统属性。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# Property模块的键值设置
# Property
# 键值
# 键名
# 值为
# 应用程序
# 要有
# 英文
# 任何一个
# 本机
# 类中
# 量少
# 就知道
# 有什么
# 也不
# 是在
# 也有
# 还没
# 还可以
# 就有
# 中有
# 会在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251811 】
【
AI营销90571 】
相关推荐:
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何自定义分页视图?(Pagination示例)
长沙企业网站制作哪家好,长沙水业集团官方网站?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
,南京靠谱的征婚网站?
在centOS 7安装mysql 5.7的详细教程
如何登录建站主机?访问步骤全解析
Python图片处理进阶教程_Pillow滤镜与图像增强
EditPlus中的正则表达式 实战(2)
如何在阿里云虚拟主机上快速搭建个人网站?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Thinkphp 中 distinct 的用法解析
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
使用Dockerfile构建java web环境
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何用VPS主机快速搭建个人网站?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
JS经典正则表达式笔试题汇总
Python文件流缓冲机制_IO性能解析【教程】
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Linux系统运维自动化项目教程_Ansible批量管理实战
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Laravel如何为API生成Swagger或OpenAPI文档
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何获取上海专业网站定制建站电话?
实例解析angularjs的filter过滤器
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Bootstrap整体框架之CSS12栅格系统
详解jQuery停止动画——stop()方法的使用
,怎么在广州志愿者网站注册?
网站图片在线制作软件,怎么在图片上做链接?
如何快速搭建自助建站会员专属系统?
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
历史网站制作软件,华为如何找回被删除的网站?
Python进程池调度策略_任务分发说明【指导】
英语简历制作免费网站推荐,如何将简历翻译成英文?

