在了解了 PMS 的调用流程之后,都有那些用处呢?首先帮助了解 Android 包管理系统原理,还有就是配合 AMS 通过 Hook 技术,实现热更新、插件化等功能。
我们可以通过反射获取到 PackageParser 对象,再反射调用它的 parsePackage() 传入 apk 路径完成解析获取到 Package 对象,再反射 PMS 的 activities、providers、receivers、services 变量,将我们解析的数据添加进去,这样就实现了动态加载(不需要 AndroidManifest.xml 文件中添加信息)。
一、Hook技术
1、Hook介绍
Hook 是“钩子”的意思,在 Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处理,也是根据事件流程一步步地向下执行。而“钩子”的意思,就是在事件传送到终点前截获井监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。
- Hook 的这个本领,使它能够将自身的代码“融入”被勾住(Hook)的程序的进程中,成为目标进程的一个部分。
- 在 Android 系统中使用了沙箱机制,普通用户程序的进程空间都是独立的,程序的运行彼此间都不受干扰。
- 根据 Hook 对象与 Hook 后处理的事件方式不同, Hook 还分为