1. 程式人生 > >PMS及APP安裝過程

PMS及APP安裝過程

--摘自《android外掛化開發指南》

1.PackageManagerService(PMS)是用來獲取apk包的資訊的

2.AMS總是會使用PMS載入包的資訊,將其封裝在LoadedApk這個類物件中,然後從中取出清單檔案申請的四大元件資訊

3.為什麼app安裝時,不把它解壓呢?因為每次從apk中讀取資源,並不是先解壓再找圖片資源,而是解析apk中的resources.arsc檔案,這個檔案儲存著資源的所有資訊,包括資源在apk中的地址,大小等。所以可以快速定位到相應資原始檔,是一種很高效的演算法。不解壓的原因是節省空間

4.PMS中有個類PackageParse,是專門用來解析androidmanifest檔案的,其中parsePackage方法返回的是Package型別的實體物件,然後使用generatePackageInfo方法,將其轉換為PackageInfo型別

APP安裝流程

第一步:PMS解析apk的清單檔案,讀取四大元件的資訊

第二步:為app分配使用者ID和使用者組ID(按照許可權分組)

第三步:在Launcher生成一個icon,icon中儲存著預設啟動的activity資訊

第四步:把上面的資訊記錄在一個xml檔案中,以備下次安裝使用

 

IPackageManager是一個AIDL,以下語句返回的是相同的物件,都是PMS在APP程序的代理物件,都能獲得當前apk包的資訊

1)Context.getPackageManager()

2)ActivityThread.getPackageManager()

3)ActivityThread的sPackageManager

4)ApplicationPackageManager的mPM欄位