手机里安装APP,在点击APK文件安装的时候会发生哪些安装过程呢?
上一期我们已经讲解了APK文件的文件结构和包含的内容。 APK文件其实是一个压缩的文件,它的格式和ZIP是一样的,我们完全可以把文件后缀由apk改成zip。这样你就可以直接用ZIP软件打开看他这个文件的结构,如果想知道它的结构以及简单的讲述,请看第3篇。
我们在安装APP时,一般的步骤呢,先是要下载,下载之后它就会提示是安装还是怎么样,如果我们这时点击apk文件或者点击安装,同意安装,会触发系统的Package manager,安装包管理者。安装管理者是一个系统程序,让你点击apk文件时,它就会自动运行并加载这个apk文件。其实他是 Package manage service。安装包管理者服务,调用李安装程序install来执行对apk的安装。这就好像我们在打开word文件时,它自动会调入WPS,并加载了这个word的docx文件。把数据和内容读入之后,分门别类地放入如下不同的目录之中。
system/app —— 系统自带的应用安装目录, System是系统的意思。那安装的就是和系统有关的,在在windows系统下面也是一样的, System文件夹下的文件是系统的文件,那什么是系统呢?好像一个国家的政府部门,所有的事情,所有的规则都由他们来制定,所有的人进来的时候都要他们登记,并且按照他们的要求去做事情。手机在手机厂出厂的时候,所有的程序都是放在这个系统APP文件夹下面的。还有你在刷机的时候刷机的内容一般也是写在这个文件夹里面。而且这个文件里面的内容是隐含的,你是无法看见的,也不能够删除它。
data/app —— 用户程序安装的目录,安装时把apk文件复制到此目录,这个里面装的是用户APP,也就是说我们自己按照自己的需要来安装的APP在这里面存放的只是apk文件及安装文件,我们在安装完了以后就会把它删除掉,例如常见的微信、头条、抖音等等都是安装在这个 Dota/APP文件夹里面。
data/data —— 存放应用程序的数据,这里面存放的是程序,它执行时候所需要的数据。
data/dalvik-cache —— 将apk中的dex文件安装到dalvik-cache目录下,我们在讲apk的结构的时候,讲了apk的根目录像是很多的dex文件,这个文件叫class.dex,它可以有很多class.dex ,class2.dex到很多个。
在你的手机里面,你可以打开文件管理。去查一查有没有这些文件。但是很遗憾地告诉你,你可能找不到这些文件,因为他们属于隐含的系统文件是不能够被你看见并且操作的,如果能被你看见,你把它删除了,造成的后果是很严重的。
专业一点来说,它的过程可以从以下的几个6个点。
(1)复制apk到/data/app目录下,解压并扫描安装包
(2)资源管理器解析apk里的资源文件
(3)解析AndroidManifest文件,在/data/data/目录下创建对应的应用数据目录
(4)对dex文件进行优化,并保存在dalvik-cache目录下,供用户执行中断。
(5)将AndroidManifest文件解析出的四大组件信息注册到PackageManagerService中
(6)安装完成后,发送广播,通知系统已经安装完毕。