注:本文不对apk安装之前,系统所做的复杂工作做分析,只针对普通的apk安装过程进行简单的过程理解
一般情况下,在apk安装时,系统一般会显示一个安装界面,获取用户同意之后进行安装,并且有一些apk预处理相关的操作,紧接着,会启动app界面,进入app。
在这一过程中,不同版本的Android系统在安装时,对包的处理是不太一样的,以下分Dalivk、ART两种虚拟机进行分析。这里主要采用原生模拟器,进行分析。
一、 Dalvik(JIT:just in time 即时编译)
过程分析:
- 点击apk包后或apk下载后,安装之前,系统会启动安装界面PackageInstallerActivity,让用户进行授权选择,用户同意后,会调用ApplicationPackageManager 进行相关操作。
- 调用ApplicationPackageManager,通过IPC来调用 PackageManagerService 中的 installPackage 方法,在这个方法中,又去调用 installPackageAsUser 方法,此时,要进行权限相关校验,完毕之后,会通过 handler 发送消息(类型:INIT_COPY,MCS_BOUND)
- 然后 startCopy —> handleStartCopy 依次调用,这里,对安装位置、存储空间进行处理,