PKMS的做用--《源碼系列》

前言

簡單瞭解一下PKMS的工做流程web

目錄

目錄
目錄

做用

PackageManagerService是安卓的核心服務之一,管理了跟Package相關的工做。緩存

大概流程圖

構造方法

第一階段

構造函數在第一階段的工做,主要是掃描並解析 ,XML 文件,將其中的信息保存到特定的數據結構中。數據結構

第二階段

掃描系統文件app

  • 建立/system的子目錄,好比/system/framework、system/priv-app和/system/app等等
  • 掃描系統文件,好比/vendor/overlay、/system/framework、/system/app等等目錄下的文件,對掃描到的系統文件作後續處理。
  • /system/frameworks:該目錄中的文件都是系統庫,例如:framework.jar、services.jar、framework-res.apk。不過 scanDirLI 只掃描APK文件,因此 framework-res.apk 是該目錄中惟一「受寵」的文件。 該目錄下全是默認的系統應用,例如:Browser.apk、SettingsProvider.apk 等。 /vendor/app:該目錄中的文件由廠商提供,即廠商特定的 APK 文件,不過目前市面上的廠商都把本身的應用放在 /system/app 目錄下。

第三階段

掃描/data/app和/data/app-private目錄下的文件編輯器

  • 遍歷possiblyDeletedUpdatedSystemApps列表,若是這個系統App的包信息不在PMS的變量mPackages中,說明是殘留的App信息,後續會刪除它的數據。說明是存在於Data分區,不屬於系統App,那麼移除其系統權限。
  • 遍歷mExpectingBetter列表,根據系統App所在的目錄設置掃描的解析參數,內部會將packageName對應的包設置數據(PackageSetting)添加到mSettings的mPackages中。掃描系統App的升級包,最後清除mExpectingBetter列表。

第四階段

  • 若是當前平臺SDK版本和上次啓動時的SDK版本不一樣,從新更新APK的受權
  • 若是是第一次啓動或者是Android M升級後的第一次啓動,須要初始化全部用戶定義的默認首選App。
  • OTA升級後的第一次啓動,會清除代碼緩存目錄。
  • 把Settings的內容保存到packages.xml中,這樣此後PMS再次建立時會讀到此前保存的Settings的內容。

第五階段

準備階段ide

installer服務

在systemserver中installer服務做爲一個重要服務在:startBootstrapServices中啓動函數

相關文章
相關標籤/搜索