读书笔记:android设计与实现第四…

Package manager:
PackageManager是Android为管理应用程序安装包(APK)提供的包管理器,这部分内容和Android启动过程联系紧密,是理解Android框架层的基础之一。
PackageManager主要包括以下部分:
1,权限处理,包括对系统和应用定义的permission和permissionGroup信息的增加、删除、查询和检查
2,报处理,包括扫描并安装和卸载APK包,查询包的UID、GID、包名、系统默认程序信息等。
3,比较两个包的Signatures信息是否相同
4,查询Activity、provider、Receiver、Service信息
5,查询Application 、Package、Resource、sharedLibrary、Feature信息
6,Intent匹配
PackageManager涉及的内容非常广泛,根据packageManager各模块的功能和在源码中所处的层次,可以将PackageManager划分为三层体系结构,应用层,中间层,服务层。
1,应用层:位于最上层,包括GoogleMarket、PackageInstaller.apk,GoogleMarket用于安装market上的程序,PackageInstaller.apk用于安装存储设备上的apk安装包
2,中间层:包括两个模块:PackageManager及其之类、adb和pm命令。PackageManager对外提供API接口,这是一个抽象类,由其子类ApplicationPackageManager实现其定义的接口,其上层的应用层调用这些API接口实现具体的功能。adb和pm命令用于安装和卸载APK,这两个模块的共同特点,通过Binder通信最终调用PackageManagerService的对等方法实现具体的功能。
3,服务层:PackageManagerService及其相关类,PackageManagerService是在Android启动过程中的init2阶段启动的JavaSystemService从binder通信的角度看,中间层是其Client端。

应用层调用getContext().getPackageManager(),获取PackageManager对象,主要做了两部分工作:
1,获得一个IPackageManager的Binder代理对象
2,以该对象为参数构造一个ApplicationPackageManager对象返回。





发布了32 篇原创文章 · 获赞 0 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章