启动:
1 mSettings = new Settings()
2 调用mSettings.addSharedUserLPw往mSettings的mSharedUsers分别添加android.uid.phone,android.uid.log和android.uid.nfc
3 String separateProcesses = SystemProperties.get(“debug.separate_processes”);不知道和这个相关的代码是干什么用的
4 mInstaller = new Installer()
5 mHandler = new PackageHandler(mHandlerThread.getLooper());
6 mUserManager = new UserManager(mInstaller, mUserAppDataDir);
貌似是个用户管理相关的东西,这里只是初始化了一下
7 readPermissions();
读etc/permissions下的xml文件,etc/permissions/platform.xml
(1) readPermissionsFromXml
mGlobalGids = appendInt(mGlobalGids, gid); gid相关的信息放到mGlobalGids中
(2)permission相关的信息通过readPermission(parser, perm)保存到mSettings.mPermissions
其中,mPermissions是一个hashmap:HashMap<String, BasePermission>,permission相关的组id会保存到BasePermission的bp.gids = appendInt(bp.gids, gid);
gid是一个int数组,可见在android中同一个权限可以对应多个不同的组。
通过上面的处理,就把platform.xml中所有的权限相关的信息以hashmap的形式保存到了Settings的mPermissions中
8 mRestoredSettings = mSettings.readLPw() 读packages.xml的信息