8.2.2 获取系统默认配置

获取系统默认配置主要包括两方面:1)获取属性系统的配置,2)获取系统默认显示参数。

1.获取属性系统配置

这里所讲的属性系统指的是在bionic/libc/include/sys/_system_properties.h中定义的4个默认属性文件。其值如下:


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"


属性系统中定义了系统全局的设置信息,设置信息均以键值对的形式出现。通过SystemProperties.get方法可以读取每个具体属性项的值。PackageManagerService启动阶段主要读取两个值:ro.build.type和debug.separate_processes。

ro. build.type:用于标记系统是eng、userdebug、user中的哪个版本。如果该值为eng,则需要将PackageManagerService.mNoDexOpt赋值为true,表示在eng版本时,不对APK文件进行dexopt操作。后续步骤中scanDirLI会根据这个值判断是否需要对应用程序目录中的APK进行obex优化。

debug. separate_processes:用于标记是否在独立进程中运行某个程序。根据该值设置PackageManagerService.mDefParseFlags和PackageManagerService.mSeparateProcesses两个全局变量,后续scanDirLi扫描并安装APK的时候需要用到。

2.获取系统默认显示参数

通过WindowManager获取屏幕默认显示参数,存入PackageManagerService.mMetrics变量中,这个值在后续scanDirLi扫描并安装APK时候需要用到,主要是匹配APK中的asset和resource。

上述步骤执行完毕后,便进入mPackages同步代码块执行后续操作。