Package Manager

2018-10-23  本文已影响0人  gbmaotai

PackageInstaller

PackageInstaller是安卓上默认的应用程序,用它来交互式地安装普通包文件。 PackageInstaller提供了用户界面来管理应用或者包文件。PackageInstaller调用一个叫 InstallAppProgress的activity来获取用户发出的指令。InstallAppProgress会请求Package Manager Service,然后通过indalld来安装包文件。源码提供在/packages/apps/PackageInstaller上。

Installd

这个系统守护程序的首要角色是获取来自Package Manager Service的请求,而该请求是通过Linux套接字/dev/socket/installed获得的。
Installd使用管理员权限执行一系列的步骤来安装APK。

Package Manger

Package Manger是一个实际上管理应用程序安装、卸载和升级的API。当我们安装APK文件 时,Package Manager会解析APK包文件和显示确认信息。当我们点击OK按钮后,Package Manger会调用一个叫“InstallPackage”的方法,这个方法有四个参数,也就是uri、installFlags、observer和 installPackagename。Package Manger请求服务。
Package Manger服务运行在系统服务进程中,而安装守护程序(installd)作为一个本地进程运行着,他们都在系统启动时开始运行。

Package Manger Serivce

等待;
添加一个包文件到安装进程的队列中;
确定合适的地方来安装包文件;
复制apk文件到一个给定的目录下;
确定应用的UID;
请求installd守护程序进程;
创建应用目录和设置权限;
提取dex代码到缓存目录中;
解析packages.list、system、data和packages.xml的最新状态;
向系统发送广播消息,消息带有安装完成效果的名字Intent.ACTION_PACKAGE_ADDED:如果是更新,会带有新的(Intent.ACTION_PACKAGE_REPLACED)。
上一篇下一篇

猜你喜欢

热点阅读