Package Manager
程序员文章站
2022-04-15 18:41:33
...
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)。
推荐阅读
-
关于package.json中npm依赖包版本前的符号含义解析
-
Java连载49-常量格式、package包介绍
-
Redis可视化工具Web Redis Manager
-
在VS 2017 下创建 Xamarin NuGet Package
-
sublime text3的package control安装失效的解决方法(插件安装包管理)
-
Linux如何使用backup-manager工具备份系统
-
Notepad++ 没有插件管理器(Plugin Manager)的原因以及解决方法
-
逻辑卷管理-LVM(Logical Volume Manager)
-
java package(包)的用法
-
manager.exe是什么进程 有什么用 manager进程查询