android getprop 分辨率,Android getprop 读取的属性哪里来的?

Android getprop 和 setprop 可以对系统属性进行读取和设置。

通过串口执行以下 geyprop 打印出来的属性让你一目了然。

属性出来了,但是在哪里设置的呢,这里有两个地方:一个是配置文件读取的,一个是系统动态获取的

1、在android源码目录下的: system/core/init/property_service.c 文件中的函数

static void load_properties_from_file(const char *fn)

上面函数作用是加载配置文件 fn 里面的系统属性。

查看该函数被调用的地方,可知道配置文件由以下几个:

#define PROP_PATH_RAMDISK_DEFAULT "/default.prop"

#define PROP_PATH_SYSTEM_BUILD "/system/build.prop"

#define PROP_PATH_SYSTEM_DEFAULT "/system/default.prop"

#define PROP_PATH_LOCAL_OVERRIDE "/data/local.prop"

其中配置文件 :system/build.prop 是在android 源码中的: build/tools/buildinfo.sh 文件中生成的,要修改的话 查看一下该文件的生成方式,应该不成问题。

出去了上面的四个配置文件外,在 init.rc. 文件中也可以手动的调用来增加属性:

eg : setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208

2、系统开机后动态获取系统属性

a、在文件 system/core/init/init.c 中有函数:

1

2

3

4

5

6

7

8

9

void notify_service_state(const char *name, const char *state)

{

char pname[PROP_NAME_MAX];

int len = strlen(name);

if ((len + 10) > PROP_NAME_MAX)

return;

snprintf(pname, sizeof(pname), "init.svc.%s", name);

property_set(pname, state);

}

其可以自动生成前缀为 init.svc. 的系统属性,通过查看该函数调用位置:

void service_start(struct service *svc, const char *dynamic_args)

static void service_stop_or_reset(struct service *svc, int how)

static int wait_for_one_process(int block)

应该是根据系统服务进程获取到的系统属性,比如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

[init.svc.adbd]: [running]

[init.svc.bootanim]: [stopped]

[init.svc.console]: [running]

[init.svc.debuggerd]: [running]

[init.svc.dhcpcd_eth0]: [stopped]

[init.svc.drm]: [running]

[init.svc.ifdown_eth0]: [stopped]

[init.svc.ifup_eth0]: [stopped]

[init.svc.initrdscript]: [stopped]

[init.svc.installd]: [running]

[init.svc.keystore]: [running]

[init.svc.kt_debug]: [stopped]

[init.svc.mali]: [stopped]

[init.svc.mdnsd]: [running]

标识该进程的运行状态的。

b、待以后查看之后再更新。

android系统启动时属性(getprop得到的属性)写入过程

在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)存放系统属性的文件并设置到系统属性。

编译时由build/tool/buildinfo.sh文件写到文件build.prop,修改系统默认属性一般是改build/tool/buildinfo.sh文件

参考文档:

http://carywei.iteye.com/blog/889482

http://www.blogjava.net/anymobile/articles/301989.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值