【Apk】安装-Apk解析

本文详细介绍了Android系统启动时及安装过程中如何解析APK,重点解析AndroidManifest.xml文件,提取四大组件信息并存储在内存中。同时,讨论了PackageManagerService在解析APK后如何保存数据,并创建应用程序目录,处理dex文件,处理native动态库,以及安装过程中的签名验证和广播通知。
摘要由CSDN通过智能技术生成

APK解析

Android是如何启动App的?
点击屏幕上的图标,然后一个Activity就启动了,这个过程中,桌面Launcher先向AMS进程发送一个intent,AMS把这个intent发给PMS,PMS解析这个intent得到Activity的信息返回给AMS,AMS启动一个空进程,通知进程创建这个Activity,那么PMS为什么会有这个Activity的信息呢?

这就是PMS解析APK要做的事情了,而解析APK的时机又要分成两种场景:

  1. 系统启动时解析APK
    Android系统在启动的时候,会启动一个system_server进程,这个进程驻留着系统多个重要的服务,其中便包含了与APK最相关的PackageManagerService服务,这个服务在启动的时候,会扫描Android系统中几个目标文件夹中的APK,对每个APK进行解析。
  2. 安装过程中解析APK
    安装一个apk的过程,PMS也会对这个APK进行解析,其调用的是PackageManagerService.java的scanPackageLI()方法,其实在系统启动时扫描全部apk的过程也是调用该方法。

可以这样理解,系统启动的时候,是解析已经安装的所有APK,而安装单个APK时,则是用同样的方法解析这个APK,过程是一样的。

解析APK具体做的是什么事情呢?

其中主要的过程就是解析APK中的AndroidManifest.xml文件,将APK的关键信息四大组件信息、权限信息等存储在内存中的PackageParser对象中,PackageParser对象的结构如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值