深入解析Android系统属性运作全流程与Java/C++层实现

0 下载量 182 浏览量 更新于2024-08-03 收藏 1.8MB PDF 举报
本文将深入剖析Android系统属性(system properties)的运作流程,重点集中在系统属性文件`build.prop`的生成机制以及在Java和C++层面上的使用。首先,`build.prop`是一个关键的系统配置文件,其中包含各种全局可见的设置,以字符串形式存储,如系统设置和进程间通信的信息。 在Java层面上,`SystemProperties.java`是主要的接口,用于获取(get)和设置(set)系统属性。Java代码通过JNI(Java Native Interface)调用本地接口`android_os_SystemProperties.cpp`,然后进一步调用C++的`property_set`函数,实现属性的设置,具体位置在`/frameworks/base/core/jni/android_os_SystemProperties.cpp`中的JNI部分。 在C++层面,系统属性操作主要发生在`libcutils/properties.c`中,这个模块负责处理属性的读写。当在Java中调用set属性时,会进一步调用`system_properties.c`中的相关函数,通过TCP套接字与`property_service`服务进行通信。这个过程涉及到了守护进程`init`在系统初始化阶段的重要角色,它会在`init.c`中启动`property_service`,并为属性数据分配共享内存区域。 `init`守护进程在`property_init()`和`property_load_boot_defaults()`函数中扮演着核心角色,它们在Android启动初期初始化属性,并在`__libc_preinit`和`__libc_init_common`等函数链中调用。这样,系统属性服务不仅在Java应用层可见,而且与底层操作系统紧密集成,确保了系统的稳定性和一致性。 总结来说,本文对Android系统属性的运作流程进行了全面分析,涵盖了从Java应用层的调用,到C++底层实现,再到系统服务的启动和内存管理的全过程,帮助读者理解了系统属性在Android生态系统中的核心作用和工作原理。