美文网首页
Android Framwork之PKMS源码解析---调用方式

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

作者: BlueSocks | 来源:发表于2023-01-08 10:48 被阅读0次

    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
    • Binder服务端:PackageManagerService继承于IPackageManager.Stub;
    • Binder客户端:ApplicationPackageManager(简称APM)的成员变量mPM继承于IPackageManager.Stub.Proxy; 本身APM是继承于PackageManager对象。

    简单的调用如下:

    /**
    * 得到应用层序的版本名称
    *
    * @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 "";
    }
    }
    

    相关文章

      网友评论

          本文标题:Android Framwork之PKMS源码解析---调用方式

          本文链接:https://www.haomeiwen.com/subject/adlucdtx.html