Chinaunix首页 | 论坛 | 博客
  • 博客访问: 235657
  • 博文数量: 149
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1127
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-26 15:53
个人简介

喷泉之所以漂亮,是因为她有压力;瀑布之所以壮观,是因为她没退路。

文章分类

全部博文(149)

文章存档

2016年(25)

2015年(124)

我的朋友

分类: Android平台

2015-11-16 14:12:21

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. void notify_service_state(const char *name, const char *state)
  2.     {
  3.         char pname[PROP_NAME_MAX];
  4.         int len = strlen(name);
  5.         if ((len + 10) > PROP_NAME_MAX)
  6.             return;
  7.         snprintf(pname, sizeof(pname), "init.svc.%s", name);
  8.         property_set(pname, state);
  9.     }
其可以自动生成前缀为 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.     [init.svc.adbd]: [running]
  3.     [init.svc.bootanim]: [stopped]
  4.     [init.svc.console]: [running]
  5.     [init.svc.debuggerd]: [running]
  6.     [init.svc.dhcpcd_eth0]: [stopped]
  7.     [init.svc.drm]: [running]
  8.     [init.svc.ifdown_eth0]: [stopped]
  9.     [init.svc.ifup_eth0]: [stopped]
  10.     [init.svc.initrdscript]: [stopped]
  11.     [init.svc.installd]: [running]
  12.     [init.svc.keystore]: [running]
  13.     [init.svc.kt_debug]: [stopped]
  14.     [init.svc.mali]: [stopped]
  15.     [init.svc.mdnsd]: [running]
标识该进程的运行状态的。
b、待以后查看之后再更新。

参考文档:

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

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

路径:
ivi_camera/bionic/libc/include/sys/_system_properties.h
阅读(707) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~