pms包管理服务分析-初步理解

初步理解

Android系统启动过程中,会启动一个包管理服务PackageManagerService(pms),这个服务主要负责扫描系统中指定目录,找出里面以apk结尾的文件,通过对这些文件进行解析,得到应用程序的所有信息并完成应用程序的安装过程。包管理服务中解析出来的apk信息供其它服务使用,如ams。

pms主要解析apk的AndroidManifest文件里面的所有信息,包括应用程序组件Activity/Service/BroadcastReceiver/ContentProvider等信息,这些信息非常有用,提供给其他服务使用,如ams。


SystemServer.java中启动PackageManagerService服务

在SystemServer的startBootstrapServices方法中获得启动pms,通过pms的main方法获得其实例。

[/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java]

public static PackageManagerService main(Context context, Installer installer,
     boolean factoryTest, boolean onlyCore) {
	PackageManagerService m = new PackageManagerService(context, installer,	factoryTest, onlyCore);
	ServiceManager.addService("package", m);
	return m;
}

Main方法比较简单,就是实例化了一个pms对象,然后将服务对象注册到ServiceManager中,服务名字为”package”,通过命令adb shell service list列出系统所有注册服务中,可以找到package服务。

注意:pms比ams晚启动,但比ams提前SystemReady。pms的启动到ready的大致流程如(图1)所示。





猜你喜欢

转载自blog.csdn.net/lgglkk/article/details/54579396
PMS