程序包管理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中,卸載過程是相反的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章