在了解了 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 還分為