解析Packages.xml获取系统信息

        熟悉Android开机启动流程的读者应该知道,在系统初始化的时候,PackageManager的底层实现类PackageManagerService回去扫描系统中的一些特定的目录,并解析其中的apk文件。同时,Android把它获得的应用信息,保存在Xml文件中,做成一个应用的花名册,当系统中的Apk安装、删除、升级时,它也会被更新。这个小册子,就是位于/data/system/目录下的——packages.xml文件,如图所示。

解析Packages.xml获取系统信息_第1张图片

        通过ADB Pull命令将它导出到本地,如图所示。

        打开packages.xml文件,信息量非常大,以至于让人眼花缭乱,无从下手,如下图所示。

 解析Packages.xml获取系统信息_第2张图片

        由于packages.xml文件非常复杂,所以先来了解下这个文件所包含的信息点标签。

  • 标签定义了目前系统中的所以权限,并分为两类:系统定义的(package属性为Android)和Apk定义的(package属性为Apk的包名),如下所示。
        
        
  • 标签代表了一个Apk的属性。
        
        
            
        
        
            
            
            
            
            
            
            
            
            
            
            
            
            
            
        
        
        
    

        其中各个节点信息的含义如下所示。

          name:Apk包名。

        codePath:Apk安装路径。主要时/system/app和/data/app两种。/system/app存放系统级别的Apk或者时厂商定制的Apk,/data/app存放客户安装的第三方Apk。

          userId:用户Id。

          version:版本号。

  • 标签

        对应的Apk的AndroidMainifest文件中的标签,记录Apk的权限信息。

        通过packages.xml文件中的这些标签,可以获取到很多手机内应用的信息,通常在进行系统层开发的时候,可以通过packages.xml文件来获取很多有价值的信息。

你可能感兴趣的:(android群英传笔记)