PKMS

作者: zhi5ai | 来源:发表于2023-10-05 14:27 被阅读0次

导引

AppError:
03-12 13:57:01.075 E/****( 5625): java.lang.NoClassDefFoundError: Failed resolution of:

pm 对于一些apk 的安装和鉴权有了解

PKMS服务,主要用来管理apk的安装,解析,验签,删除,升级等功能

当安卓系统要安装某个应用时,apk文件会被加载到/data/app目录下,然后PMS就对该目录下的apk缓存文件进行扫描。

PMS就会在/data/app目录里对这个apk文件进行解析,apk文件里是有很多文件的,因此要让系统迅速定位到这么多类(四大组件等),就应该有个服务事先把它们的包名路径等信息加载好,这样就可以快速地定位到这些类(比如入口Activity等),而这个服务就是PMS,然后AMS即ActivityManagerService就能根据PMS里面的这些类信息来进行创建入口Activity等四大组件类并启动。

当手机开机时,PMS也会去扫描加载/data/app目录和system/app里每个apk里的所有类信息并且进行解析,然后缓存到PMS它自己里面定义好的集合里,供AMS使用

image.png
PMS加载每个apk(包括系统apk)里的清单文件,然后把里面相应的类(节点)信息进行分类存储:
image.png
每个apk对应一个缓存对象Package,而PMS是一个单独进程,来管理这些Package对象。
当用户点击app图标的那一刻,AMS就根据PMS里Package里的这些集合里的类信息以及intent里设置的意图信息,然后定位到要显示的类,创建然后启动它
图画的太好了,忍不住赞叹
AMS从PMS里拿到这个启动类的信息数据之后,就缓存到它自己的ActivityThread里的ActivityClientRecord集合里,也就是跳转记录集合里
image.png

引导

第三方应用安装

Android 8.1 源码_核心篇 - 深入研究 PackageManagerService 系列(3)
android系统启动过程中解析Manifest的流程是通过PackageManagerService服务来实现的

12 系统启动并解析Manifest的流程.md ·
应用的开端--PackageManagerService(PMS)

  1. 开机启动应用
PMS构造方法里去扫描
    scanPackageTracedLI  
        scanPackageLI
            PackageParser.parsePackage
                parseMonolithicPackage
                parseBaseApk  //解析清单文件AndroidManifest.xml
                  parseBaseApkCommon
getApplicationInfo
    getApplicationInfoInternal
          PackageParser.generateApplicationInfo

          
AMS.systemReady
AMS.startHomeActivityLocked
    resolveActivityInfo
          PKMS.getActivityInfo
                getActivityInfoInternal
                     generateActivityInfo

example:
AMS.resolveActivity
    PKMS.resolveIntent
      resolveIntentInternal
        queryIntentActivitiesInternal
            getActivityInfo

相关文章

  • Android Framework中关于PKMS的调用方式简述

    本篇文章主要谈一谈PKMS调用方式。 PKMS概述 PKMS指PackageManagerService服务本身以...

  • 建立我的个人知识管理系统

    目录 1 概述 1.1 PKMS的需求是什么 1.2 PKMS的顶层框架是什么 1.3 细...

  • PKMS

    核心功能 1.解析AndroidNanifest.xml清单文件,解析清单文件中的所有节点信息2.扫描.apk文件...

  • android10的PKMS很low的简单研究

    写的超级省超级烂 PKMS简介 pkms叫packageManageserver,主要功能是1.解析Android...

  • PKMS 1

    本文仅供自己记录学习使用。 /frameworks/base/core/java/android/content/...

  • PKMS 2

    本文分析 APK 是如何安装的,以及 PKMS 在这个过程中进行了哪些工作。 本文仅供自己记录学习使用。 APK ...

  • PKMS(二)

    Android知识总结[https://www.jianshu.com/p/01b1de0504d2] 一、权限的...

  • PKMS/PMS服务

    PackageManagerService启动流程 从开机到app的启动 系统内置应用程序安装

  • Android Framework之PKMS

    一,定义 PackageManagerService(简称 PKMS),是 Android 系统中核心服务之一,负...

  • 12 PackageManagerService

    1.概述 PackageManagerService(简称PKMS),是Android系统中核心服务之一,管理着所...

网友评论

      本文标题:PKMS

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