zoukankan      html  css  js  c++  java
  • 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   中有函数:

    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)

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

    [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、待以后查看之后再更新。

    参考文档:

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

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

  • 相关阅读:
    资源链接
    python pip下载速度慢的解决方法
    淘宝 NPM 镜像
    python学习链接
    Linux升级python3之后yum不能正常使用解决方法一:重新配置yum源
    rand和srand的用法
    static与volatile的用法
    CentOS 7
    C++类(Class)总结
    简单的linux命令
  • 原文地址:https://www.cnblogs.com/codeking100/p/10341083.html
Copyright © 2011-2022 走看看