程序包管理PMS

https://blog.csdn.net/english2888/article/details/79361529
程序包管理包含三个部分内容:
提供一个能够根据intent匹配到具体的Activity、Provider、Service。
进行权限检查。即当应用程序调用某个需要一定权限的函数时,系统判断调用者是否具备该权限
提供安装、删除应用程序的接口
一、包管理概述:
该框架分为三层,分别为程序应用层、Pms服务层及数据文件层
程序应用层
调用ContextImpl类的getPackageManager()函数返回一个 ApplicationPackageManager对象,
它继承自PackageManager抽象类,参数传入Pms,Apm类调用各种pms的类方法。
Pms服务层
​第一个目录是“/system/etc/permissions”
第二个目录是“/data/system/packages.xml"
数据文件层
程序文件,所有系统程序保存在/system/app下
framework库文件,这些文件保存在/system/framework目录下
应用程序使用的数据文件。分别为sharepreference存储、数据库存储和文件存储,
前两种文件一般会保存在/data/data/xxx/目录下,xxx代表程序包名,
文件存储可以保存在内置存储或者外置存储的任意位置。
二、包管理服务的启动过程
当SystemServer进程启动时,其初始化函数中会启动各种具体的服务进程,包括Ams、Wms和Pms等,Pms服务是从静态函数中创建的
pms初始化时会遍历程序目录下的全部程序,并从其包含的AndroidManifest.xml文件中提取出所有的intent-filter数据,
并将其保存到以上的四个变量中
三、PMS主体启动流程
创建一个Settings对象,在该对象的构造函数时,给成员变量赋值
四、应用程序的安装和卸载
安装及卸载程序操作都是由Pms完成,安装程序的过程包括在程序目录下创建以包名称命名的程序文件、创建程序数据目录,
以及把程序信息保存到相关的配置文件packages.xml中,卸载过程是相反的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值