1.清单文件对象化对应关系:
正如我们所知,AndroidManifest是安装过程中重要核心内容保存,在安装初始化过程中,会将其XML各个节点对应的Java对象。
按照级别分为:
PackageInfo
ApplicationInfo
ActivityInfo/ServiceInfo
2.核心类的解析
(1)PackageInfo:关于包的包名版本号以及所有的四大组件。
- public String packageName:包名
- public String versionName:版本名
- public String versionCode:版本号
- public String sharedUserId:共享用户ID,签名相同的情况下程序之间数据共享
- public long firstInstallTime:第一次安装时间,忽略之前安装后卸载的情况单位ms
- public long lastUpdateTime:最后更新时间,相同版本号的APK覆盖安装,该值也会发生变化,单位ms
- public String[] requestedPermissions:请求的权限
- public ApplicationInfo applicationInfo:Applicationinfo对象,下面会讲解
- public ActivityInfo[] activities:注册的Activity
- public ActivityInfo[] receivers:注册的Receiver,PS:注意这里是ActivityInfo[]
- public ServiceInfo[] services:注册的服务
- public ProviderInfo[] providers:注册的Providers
(2)PackageItemInfo:XML文件中各个节点对应的Java对象的基类
(3)ApplicationInfo:继承PackageItemInfo,是<application>节点信息。进程名称以及是否是系统应用判断
(4)ComponentInfo:
四大组件的基类,提供组件名称功能
(5)ActivityInfo
提供关于Activity的启动模式、主题、lable。
(6)ServiceInfo
同ActivityInfo
(7)ProviderInfo
同ServiceInfo,对应于<provider> 节点
(8)ResolveInfo
对应于<intent>节点
(9)PermissionInfo
对应于该应用的权限,同样集成PackageItemInfo
(10)PermissionGroupInfo
对应于该应用的权限组
我能看得更远,因为站在巨人肩膀