一.先验知识
0.PcakageaManagerService版本变化
1.概述
2.PackageManagerService服务启动流程
3. PackageManagerService入口
二.四种安装方式
1.系统应用安装2.网络下载应用安装3. ADB工具安装
4.第三方应用安装
三.总结
概述
1.1概述
众所周知,Android应用最终是打包成.apk格式(其实就是一个压缩包),然后安装至手机并运行的。APK即Android Package的缩写。
Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程。
应用程序管理服务PackageManagerService安装应用程序的过程,其实就是解析析应用程序配置文件AndroidManifest.xml的过程,并从里面得到得到应用程序的相关信息,例如得到应用程序的组件Activity、Service、Broadcast Receiver和Content Provider等信息,有了这些信息后,通过ActivityManagerService这个服务,我们就可以在系统中正常地使用这些应用程序了。
Android应用APK安装的方式
一般而言,Android应用安装有如下四种方式:
系统应用安装:开机时加载系统的APK和应用,没有安装界面;
网络下载应用安装:通过各种market应用完成,没有安装界面;
ADB工具安装:即通过Android的SDK开发tools里面的adb.exe程序安装,没有安装界面;
第三方应用安装:通过SD卡里的APK文件安装(比如双击APK文件触发),有安装界面,系统默认已经安装了一个安装卸载应用的程序,即由packageinstaller.apk应用处理安装及卸载过程的界面。
应用安装涉及到的目录
/system/app :系统自带的应用程序,获得adb root权限才能删除
/data/app :用户程序安装的目录。安装时把apk文件复制到此目录
/data/data :存放应用程序的数据
/data/dalvik-cache:将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,当然,ART–Android Runtime的可执行文件格式为oat,启用ART时,系统会执行dex文件转换至oat文件)
/data/system :该目录下的packages.xml文件,类似于Windows的注册表,这个文件是在解析apk时由writeL