主要是涉及PackageManager
和ActivityManager
。packageManager解析阶段,ActivitityManager运行阶段的一些信息。
AndroidManifest.xml文件的解析
是有PackageManager进行解析。
<Mainifest/>
:整个manifest.xml文件,由PackageInfo类提供。可以通过PackageManager调用返回下面的类。- ActivityInfo:
<activity/><receiver/>
所有信息,name,icon,lable,lancumod. - ServiceInfo:
<service/>
所有信息。 - ApplicationInfo:
<application/>
之间的信息,包含很多FLAG,FLAG_SYSTEM表示系统应用,FLAG_EXTERNAL_STORAGE表示安装在SDCard上应用。 - PackageInfo:与前三个类似,封装Manifest文件相关节点信息。包含所有activty,service信息。
- ResolveInfo:包含
<intent>
信息的上一级信息。帮助找到包含特定Intent条件信息,如:分享功能,播放功能的应用。 - 判断不同类型应用:
flags&ApplicationInfo.FLAG_SYSTEM!=0,系统应用。
flags&ApplicationInfo.FLAG_SYSTEM<=0,第三方应用.
系统应用升级后,将成为第三方应用:flags&ApplicationInfo.FLAG_UPDATE_SYSTEM_APP!=0 <Activity/>
:由ActivityInfo类进行封装。
ActivityManager:应用信息
获取程序运行时的应用信息,而PackagerManager侧重应用包的信息。
- ActivityManager.MemotyInfo:(全局)内存信息–threhod:低内存阀值
Debug.MemotyInfo:(进程下内存信息) - RunningAppProcessInfo:运行程序的信息,processName,pid,uid,pkgList改进 程所有的包。
- RunningServiceInfo:运行服务信息,服务进程信息。activeSince第一次被激 活时间。foreground服务时候在后台执行。
解析Packages.xml获取系统信息
开机过程中,PackageManagerService 会扫描系统一些特定的目录,并解析其中的Apk文件。同时把它获得Android应用信息,保存在Packages.xml中,当APK安装,删除,升级也会更新xml文件。
Packages.xml:
* <permissions>
目前系统中所有权限:系统定义的(package属性为Android)和APK定义的(package属性为APK的包名)
* <package>
标签代表一个APK的属性。用来获取手机内应用的信息,通过packages.xml文件获取很多有用价值。