- Android源码(4) --- 系统 Mainfest 文件解
- APK安装流程详解13——PMS中的新安装流程下(装载)
- APK安装流程详解4——安装中关于so库的那些事
- APK安装流程详解10——PackageParser解析APK(
- APK安装流程详解9——PackageParser解析APK(上
- APK安装流程详解15——PMS中的新安装流程下(装载)补充
- APK安装流程详解8——PackageManagerServic
- APK安装流程详解6——PackageManagerServic
- APK安装流程详解5——Installer、InstallerC
- APK安装流程详解12——PMS中的新安装流程上(拷贝)

这篇文章来总结apk安装流程,这篇文章分四个方面来描述这几个流程。
1.Android中调起安装界面
Android根据文件类型MimeType来判断是否弹起安装页面
- 常用的文件类型
add("application/zip", "zip");
add("application/vnd.android.package-archive", "apk");
add("video/mp4", "mp4");
add("video/3gpp", "3gpp");
add("text/plain", "txt");
add("image/gif", "gif");
add("image/ico", "ico");
add("image/jpeg", "jpeg");
add("image/jpeg", "jpg"); - 安装界面是PackageInstallerActivity
2.整个apk安装流程
安装图解和过程描述
- 复制APK到/data/app目录下,解压并扫描安装包。
- 资源管理器解析APK里的资源文件。
- 解析AndroidManifest文件,并在/data/data/目录下创建对应的应用数据目录。
- 然后对dex文件进行优化,并保存在dalvik-cache目录下。
- 将AndroidManifest文件解析出的四大组件信息注册到PackageManagerService中。
- 安装完成后,发送广播。
总体说来就两件事情拷贝APK和解析APK,解析APK主要是解析AndroidManifest.xml,以便获得它的安装信息。在安装的过程中还会这个应用分配Linux用 户ID和Linux用户组ID(以便它可以在系统中获取合适的运行权限)。
3.涉及的三个进程
- PackageInstaller进程:PackageInstaller事实上是一个应用,它负责APK安装以及卸载过程中与用户的交互流程。
- SystemServer进程:该进程主要运行的是系统服务,APK的安装、卸载和查询都由PackageManagerService负责,它也是Android核心系统服务的一种,在SystemServer里初始化系统服务的时候被启动。
- DefaultContainerService进程:DefaultContainerService也是一个单独的进程,它主要负责检查和复制设备上的文件,APK的复制就是由DefaultContainerService来完成的。
4.apk解析流程
- Android不同类型
/system/framwork:保存的是资源型的应用程序,它们用来打包资源文件。
/system/app:保存系统自带的应用程序。
/data/app:保存用户安装的应用程序。
/data/app-private:保存受DRM保护的私有应用程序。
/vendor/app:保存设备厂商提供的应用程序。 - DEX的dexopt流程
dexopt操作实际上对DEX文件在执行前进行一些优化,但是不同的虚拟机操作有所不同。
Davlik:将dex文件优化生成odex文件,这个odex文件的后缀也是dex,保存在/data/dalvik-cache目录下。
ART:将dex文件翻译生成oat文件
以上就是对Android安装流程的一个介绍。
网友评论