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

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

  1. android横屏分辨率,android适配不同分辨率hdpi、mdpi、ldpi横屏竖屏

    一:不同的layout Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layo ...

  2. android manifest 分辨率,android程序界面自动适应屏幕分辨率例子

    为不同分辨率的手机创建界面 1,首先进入res 文件夹下. 2,创建一个名为"layout-1024x768"文件夹, 其中1024x768 是屏幕分辨率的大小,值得注意的是分辨率 ...

  3. android+note2+分辨率,Android自适应屏幕方向、大小和分辨率

    屏幕大小 1.不同的layout Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢?其实很简单,只需要在res目录下创建不同的la ...

  4. android 开发 分辨率,Android手机应用开发为适应不同分辨率你应该知道的

    QVGA(Quarter VGA):其分辨率为240×320像素,是当下智能手机最常用的分辨率级别.240×320像素的意思就是,手机屏幕横向每行有240个象素点,纵向每 列有320个象素点,乘起来就 ...

  5. android camera 分辨率,Android:相机帧分辨率大于640x480(Android: camera frame resolution larger than 640x480)...

    Android:相机帧分辨率大于640x480(Android: camera frame resolution larger than 640x480) 在Android中,您需要将Surface设 ...

  6. android videoview 分辨率,android 修改videoview的宽度和高度

    如果直接用android的videoview.他是不允许你随意的修改宽度和高度的,所以我们要重写videoview! package com.hysmarthotel.view; import and ...

  7. android 1dp分辨率,android 1dp等于多少mm

    像素的计算不是按显示器的面积计算的. 比如同样的像素在14的显示器上和24的显示器上它的面积是不同的,同样的像小的显示器像素点要小的多,电脑显示器一般用分辨率来表示,你的电脑是1440x900分辨率, ...

  8. android 图标 分辨率,Android分辨率及对应DPI图标

    1Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3 VGA     640*480 (Video Graphics Array) QVGA  320*240 (Quarter VG ...

  9. Android C 语言读取系统属性

    用 Qt Creator 写一个 Android 程序,需要读取 DNS .C 语言怎么读呢,研究了一下,原来在 Android 的 C 库里,就有读取系统属性的方法.用 objdump 看了一下 l ...

最新文章

  1. 文件服务器 之 ProFTPD+MySQL 认证
  2. [ARM异常]-armv8-aarch64下当中断来时自动触发的硬件行为
  3. MySQL查询过程及Scheme设计与数据类型优化
  4. python传中文参数_解决Python传递中文参数的问题
  5. textarea在IE中和FF下不同的效果
  6. JavaScript强化教程——Bootstrap
  7. BLP安全操作系统---道里云公司参展英特尔北京IDF峰会介绍(三)
  8. golang微服务网关
  9. The Feynman Technique The Best Way to Learn Anything理查德•弗曼学习法
  10. 软件中的快速原型技术
  11. 我希望进入大学时就能知道的一些事儿 -----作者:瞬息之间
  12. 手机卫星定位系统_北斗三号最后一颗卫星发射成功完成组网!为何手机上还显示GPS?...
  13. 展望下未来的计算机400字,展望未来的作文400字
  14. linux 挂载3t硬盘分区,Ubuntu挂载3T硬盘或大于2T磁盘的方法
  15. POJ 2455 dinic
  16. AIoT(人工智能+物联网)知识总结+实战项目
  17. @ConfigrationProperties + @EnableConfigrationProperties
  18. 织梦插件,织梦dedecms自动采集插件,自动采集
  19. 尼甘布 小渔村的惬意生活
  20. android 更改字体_如何在Android中更改字体

热门文章

  1. 多线程和MsgWaitForMultipleObjects
  2. 小程序云服务器选什么系统好,小程序云服务器操作系统选择
  3. Kotlin实践(2)-生成jvm程序
  4. linux内核杂记(3)-进程(1)
  5. rust(39)-递归-阶乘与斐波那契数
  6. rust-let 不可变绑定与可变绑定(4)
  7. 【CV】目标检测:常用名词与mAP评价指标的引出
  8. 学完可以解决90%以上的数据分析问题-利用python进行数据分析第二版(代码和中文笔记)...
  9. 国内外优秀的计算机视觉团队汇总|持续更新
  10. 【最后一天倒计时】你离¥399网易黑猪肉券就差一步