Package Manager

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)。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值