PMS構造函數以及apk如何掃描
一、PackageManagerService
構造函數
1.創建data目錄下面以及文件(settings的構造函數),然後再添加6個SharedUserSetting
2.開始掃描並且解析APK
3.實例化SystemConfig並獲得mGlobalGids, mSystemPermissions, mAvailableFeatures,mSharedLibraries
a.mGlobalGids : 建立底層user ids和group ids同上層permissions之間的映射;可以指定一個權限和幾個組id的對應。當一個APK被授予這個權限時,它也同時屬於這幾個組
b.mSystemPermissions : 給一些底層用戶分配權限,如給 shell 授予各種 permission 權限;把一個權限賦予一個UID,當進程使用這個 UID 運行時,就具備了這個權限
c. mAvailableFeatures : 系統所有支持的個硬件,如新增硬件支持,都要添加相應的feature
d. mSharedLibraries : 系統增加的一些應用需要 link 的擴展 jar 庫
4. 在data目錄下建立多個系統目錄,如/data/app(用於保存安裝的第三方apk包), /data/data(用於保存apk數據), /data/app-lib, /data/app-asec, /data/user, /data/app-private
5.將權限分配給package manager
6 . 分別按照優先級掃描解析並安裝/vendor/overlay > /system/framework >/system/priv-app > /system/app > /vendor/app >oemAppDir下的所有apk文件
二、解析apk的流程:
一些重要參數的解讀
1.mPackages 是包名和包對象的映射表,mPackages會保存所有的已安裝apk信息
PMS構造函數以及apk如何掃描