/data/system/packages.xml這個文件由PackageManagerService.java生成,里面記錄了系統(tǒng)當(dāng)中安裝的APK的所有屬性,權(quán)限等信息。當(dāng)系統(tǒng)中的APK安裝、刪除、升級時,文件就會被更新。
<permissions>標(biāo)簽定義了目前系統(tǒng)中定義的所有權(quán)限。主要分為兩類:系統(tǒng)定義的(package屬性為android)和APK定義的(package屬性為APK的包名)。
<package>代表一個APK的屬性,它的屬性含義如下。
name:APK的包名
codePath:安裝路徑。有/system/app系統(tǒng)APK和/data/app兩種。/system/app存放系統(tǒng)出廠時預(yù)置的一些APK,/data/app存放用戶安裝的第三方APK。
system:如果APK被安裝在/system/app下,system的值為true;安裝在/data/app下面的話,值為true。
ts:時間戳
version:APK的版本號
sharedUserId/userId:Android系統(tǒng)啟動一個普通的APK時,會為這個APK分配一個獨立的UID,這就是userId。如果APK要和系統(tǒng)中其它APK使用相同的UID的話,那就是sharedUserId。關(guān)于共享UID,下面有更詳細(xì)的描述。
perms:APK的AndroidManifest.xml文件中,每使用一個<uses-permission>標(biāo)簽,<perms>標(biāo)簽中就會增加一項。
<shared-user>代表一個共享UID,通常,共同實現(xiàn)一系列相似功能的APK共享一個UID。<perms>標(biāo)簽中的權(quán)限代表了這個共享UID的權(quán)限,所有使用的同一個共享UID的APK運行在同一進(jìn)程中,這個進(jìn)程的UID就是這個共享UID,這些APK都具有這個共享UID的權(quán)限。
name:共享UID的名字,在APK的android:sharedUserId屬性中使用。
userId:使用這個共享UID的所有APK運行時所在的進(jìn)程的UID。