Android Framwork之PKMS源码解析---调用方式

2023-01-08  本文已影响0人  BlueSocks

1、简单介绍

PackageManagerService简称PKMS,Android系统的核心服务之一,是在SystemServer的run方法中的

startBootstrapServices启动的,管理者着所有跟Package相关的工作,常见的比如安装,卸载,信息查询等,

主要完成以下核心功能:

1. 解析AndroidNanifest.xml清单文件,解析清单文件中的所有节点信息。
2. 扫描.apk文件,安装系统应用,安装本地应用等。
3. 管理本地应用,主要有, 安装,卸载,应用信息查询等。

2、PKMS调用方式

客户端可通过Context.getPackageManager()获得ApplicationPackageManager对象, 而mPM指向的是Proxy代理,当调用到mPM.方法后,将会调用到IPackageManager的Proxy代理方法,然后通过Binder机制中的mRemote与服务端PackageManagerService通信,并调用到PackageManagerService的方法。


image.png

简单的调用如下:

/**
* 得到应用层序的版本名称
*
* @return
*/
private String getVersionName() {
PackageManager packageManager = getPackageManager();
try {
// 得到apk的功能清单文件:为了防止出错直接使用getPackageName()方法获得包名
// packageManager.getPackageInfo("com.xxx.xxx", 0);
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
//返回版本名称
return packageInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
上一篇下一篇

猜你喜欢

热点阅读