
PackageManager
文章平均质量分 94
忙忙碌碌一头羊
这个作者很懒,什么都没留下…
展开
-
Android 9.0 PM机制系列(六)APK解析
前言在本系列的前面文章中,我介绍了PackageInstaller的初始化和安装APK过程、PMS处理APK的安装和PMS的创建过程,这些文章中经常会涉及到一个类,那就是PackageParser,它用来在APK的安装过程中解析APK,那么APK是如何被解析的呢?这篇文章会给你答案。1.引入PackageParserAndroid世界中有很多包,比如应用程序的APK,Android运行环境的JAR包(比如framework.jar)和组成Android系统的各种动态库so等等,由于包的种类和数量繁多,原创 2021-06-28 23:06:01 · 1187 阅读 · 3 评论 -
Android 9.0 PM机制系列(五)PMS启动流程
前言PMS的创建过程分为两个部分进行讲解,分别是SyetemServer处理部分和PMS构造方法。其中SyetemServer处理部分和AMS和WMS的创建过程基本类似。1. SyetemServer处理部分PMS是在SyetemServer进程中被创建的,SyetemServer进程用来创建系统服务。从SyetemServer的入口方法main方法开始讲起,如下所示。frameworks/base/services/java/com/android/server/SystemServer.jav原创 2021-06-28 16:06:51 · 1425 阅读 · 0 评论 -
Android 4.4 PM机制系列(四) APK安装需要空间分析
前言在 Android 9.0 PM机制系列(四) APK安装需要空间分析以及 Android 6.0 PM机制系列(四) APK安装需要空间分析两篇文章中,我们重点分析了Android9.0以及Android6.0所需要的最小APK安装存储空间大小。本篇我们要分析Android4.4安装APK所需要空间大小。1. 开始安装分析源码,一直跟到PMS里面,发现和Android9.0,6.0一样,安装核心代码开始处就在handleStartCopy方法,代码如下:/frameworks/base/ser原创 2021-06-22 17:23:47 · 1083 阅读 · 0 评论 -
Android 6.0 PM机制系列(四) APK安装需要空间分析
前言在Android 9.0 PM机制系列(四) APK安装需要空间分析文章中,我们重点分析了Android9.0需要的最小APK安装存储空间大小。结论就是:只要系统空间小于Math.min(getTotalSpace的5%,500M)+ PackageHelper.calculateInstalledSize(pkg, abiOverride),系统就会报空间不足。正当以为所有的系统都大抵如此,但是没想到在Android6.0上面,当空间存储只有30M的时候,依旧可以安装10M的应用。这到底是怎么回事原创 2021-06-21 22:48:39 · 634 阅读 · 0 评论 -
Android 9.0 PM机制系列(四) APK安装需要空间分析
前言在PM机制系列前三篇,我们着重分析了安装的整个流程,没有具体到很多细节问题。这一篇文章我们就会具体到很多细节问题。本篇主要就是围绕一个问题展开:安装APK到底需要多少空间不会报错INSTALL_FAILED_INSUFFICIENT_STORAGE?可以提高我们的安装成功率。1. 分析结果时序图DCS: DefaultContainerServiceSMS: StorageManagerServiceSM: StorageManager调用关系图如下所示,后面会进行具体分析原创 2021-06-21 16:15:24 · 1110 阅读 · 0 评论 -
Android 9.0 PM机制系列(三)PMS处理APK的安装
前言在上一篇文章 Android9.0 PM机制系列(二)PackageInstaller安装APK中,我们学习了PackageInstaller是如何安装APK的,最后会将APK的信息交由PMS处理。那么PMS是如何处理的呢?这篇文章会给你答案。1.PackageHandler处理安装消息接着上一篇文章的代码逻辑来查看PMS的installStage方法。frameworks/base/services/core/java/com/android/server/pm/PackageManagerS原创 2021-06-20 23:34:15 · 1066 阅读 · 2 评论 -
Android9.0 PM机制系列(二)PackageInstaller安装APK
前言在本系列上一篇文章Android9.0 PM机制系列(一)PackageInstaller初始化解析中我们学习了PackageInstaller是如何初始化的,这一篇文章我们接着学习PackageInstaller是如何安装APK的。本系列文章的源码基于Android9.0。1.PackageInstaller中的处理紧接着上一篇的内容,在PackageInstallerActivity调用startInstallConfirm方法初始化安装确认界面后,这个安装确认界面就会呈现给用户,用户如果想要原创 2021-06-20 22:17:56 · 2228 阅读 · 0 评论 -
Android9.0 PM机制系列(一)PackageInstaller初始化解析
前言包管理机制是Android中的重要机制,是应用开发和系统开发需要掌握的知识点之一。包指的是Apk、jar和so文件等等,它们被加载到Android内存中,由一个包转变成可执行的代码,这就需要一个机制来进行包的加载、解析、管理等操作,这就是包管理机制。包管理机制由许多类一起组成,其中核心为PackageManagerService(PMS),它负责对包进行管理,如果直接讲PMS会比较难以理解,因此我们需要一个切入点,这个切入点就是常见的APK的安装。讲到APK的安装之前,先了解下PackageMa原创 2021-06-20 21:01:24 · 1639 阅读 · 1 评论