scanDirLI
scanDirLI的几个参数说明一下,
-
scanDir,应用目录的集合,以上面Settings为例,目录是
/system_ext/priv-app
-
scanFlags,扫描的标志,当为系统应用时,会加上
SCAN_AS_SYSTEM
标志,如果是priv-app目录还要加上SCAN_AS_PRIVILGED
-
packageParser,这个就是解析AndroidManifest.xml主要工具类
-
executorService,生产者线程
scanDirLI的逻辑比较简单,
-
以上面
/system_ext/priv-app
为例,遍历目录下的每个目录和apk -
使用ExecutorService(线程池)对所有目录和apk进行解析
-
获取ParsedPackage并进行调用
addForInitLI()
addForInitLI
逻辑相当的复杂,考虑情况也要很多,有些自己也没搞懂,只挑能说的说一下
-
首先重命名包名的逻辑,在PkMS当中所有的package都是按照包名作为唯一的主键值,那么就可能出现应用需要更换包名的情况,PkMS给出解决方案是