关于Android properties 中ro开头无法修改的问题

熟悉Android开发的小伙伴都知道,build.prop里存在很多选项,其中ro开头的选项无法通过SystemProperties.set方法进行修改。这里除了Selinux的原因还有本身propertyservice里的限制,我们看看代码

system/core/init/property_service.c

298 int property_set(const char *name, const char *value)                                  
299 {
300     prop_info *pi;
301     int ret;
302 
303     size_t namelen = strlen(name);
304     size_t valuelen = strlen(value);
305 
306     if (!is_legal_property_name(name, namelen)) return -1;//判断一下是否符合格式
307     if (valuelen >= PROP_VALUE_MAX) return -1;//判断一下是否超过长度
308 
309     pi = (prop_info*) __system_property_find(name);
310 
311     if(pi != 0) {
312         /* ro.* properties may NEVER be modified once set */
313         if(!strncmp(name, "ro.", 3)) {
314             return -1;//这个if就是关键所在了。判断一下是否是ro.开头,如果是就返回。
315         }
因此,如果需要指定某个ro.选项可以修改的可以再多判断ro.xxx是否符合如果符合,这里可以不用返回-1而是继续走下面代码的流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值