在上一篇博客,Android-XML格式描述,介绍来XML在Android中的格式;

Android-系统解析AndroidManifest,是分析Android系统是如何去解析AndroidManifest.xml里面的xml数据的,可以肯定的是Android系统是使用Android-Xml,PullParser,解析,这种方式解析的;

对于Android APP应用程序开发来说,AndroidManifest.xml里面所配置的内容,至关重要,在安装.apk文件的时候,Android操作系统是如何解析AndroidManifest.xml里面内容的呢:

AndroidManifest.xml 内容结构:

包相关信息(包名,版本code,版本name,等等) 
应用相关信息(应用图标,应用名称,等等) 
Activity相关信息(Activity名称,等等)


模拟Android系统的安装程序,安装过程中对AndroidManifest的对象封装:

/**
* Android操作系统是如何去解析分解AndroidManifest
*/
private void androidOSDecompositionAndroidManifest() {
try {
/**
* 当应用程序安装的时候,Android操作系统的安装程序,就会去解析AndroidManifest.xml文件里面的信息
* Android操作系统的安装程序,该如何去解析呢,肯定是以面向对象的思想方式去封装。
*/ /**
* Android操作系统的安装程序在安装之前,就已经对所有应用进行了包管理:
*/
// package管理:管理Android里面所有的应用
PackageManager pm = getPackageManager(); // 首先获取已经安装OK的应用程序的package包,它把包的信息进行了对象实体的封装PackageInfo
List<PackageInfo> packageInfos = pm.getInstalledPackages(0); // 指定包名,获取包信息
PackageInfo packageInfo = pm.getPackageInfo("com.liudeli.day3.android_manifest", 0);
// 得到包名
String packageName = packageInfo.packageName;
// 得到版本号信息
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName; // 在包的里面,有applicationInfo,获取应用信息
ApplicationInfo applicationInfo = packageInfo.applicationInfo;
// 获取应用图标
Drawable icon = applicationInfo.loadIcon(pm);
// 获取应用名称
CharSequence label = applicationInfo.loadLabel(pm); // 我们从表面上看,以为ApplicationInfo 里面有Activity信息,其实不是这样的
// Activity信息是在packageInfo里面
ActivityInfo[] activityInfos = packageInfo.activities;
ActivityInfo activityInfo = activityInfos[0];
// 得到Activity的名字
String name = activityInfo.name; } catch (Exception e) {
e.printStackTrace();
}
}

AndroidManifest 里面package的配置: 

模拟Android系统安装程序的package对象封装: 

AndroidManifest 里面application的配置: 

模拟Android系统安装程序的application对象封装: 

AndroidManifest 里面activity的配置: 

模拟Android系统安装程序的activity对象封装:

我们从表面上看,以为ApplicationInfo 里面有Activity信息,其实不是这样的 
Activity信息是在packageInfo里面 

Android-系统解析AndroidManifest的更多相关文章

  1. Android源代码解析之(十三)--&gt;apk安装流程

    转载请标明出处:一片枫叶的专栏 上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定文件夹.解析apk文件并安装的过程,这个安装过程实 ...

  2. Android系统init进程启动及init.rc全解析

    转:https://blog.csdn.net/zhonglunshun/article/details/78615980 服务启动机制system/core/init/init.c文件main函数中 ...

  3. Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551  Android系统Recovery工作原理之使用update.zip升级过程分 ...

  4. Android View系统解析(下)

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/38426471(来自singwhatiwanna的csdn博客) Androi ...

  5. Android核心服务解析篇(三)——Android系统的启动

    从大的方面来说.Android系统的启动能够分为两个部分:第一部分是Linux核心的启动,第二部分是Android系统的启动. 第一部分主要包含系统引导,核心和驱动程序等,因为它们不属于本篇要讲的内容 ...

  6. android系统架构解析

    以上是我在这个课题下的一些参考博客或者网页链接.里面有对于android架构的一些较好的分析理解,接下来是楼主在阅读后自己的一些整理. Android采用层次化系统架构,官方公布的标准架构如下图所示. ...

  7. 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速

    作者:唐老师,华清远见嵌入式学院讲师. Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新 版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们 ...

  8. Android系统在新进程中启动自定义服务过程(startService)的原理分析

    在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现 ...

  9. android系统如何自适应屏幕大小

    1.屏幕相关概念 1.1分辨率 是指屏幕上有横竖各有多少个像素 1.2屏幕尺寸 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 android将屏幕大小分为四个级别 ...

  10. Android系统默认Home应用程序(Launcher)的启动过程源码分析

    在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还须要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...

随机推荐

  1. GO.db

    相似的基因在不同物种中,其功能往往保守的.显然,需要一个统一的术语用于描述这些跨物种的同源基因及其基因产物的功能,否则,不同的实验室对相同的基因的功能的描述不同,将极大限制学术的交流.而 Gene O ...

  2. SpringMVC 文件上传 MultipartFile

    本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:http ...

  3. svn搭建相关

    转载至:http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933/ 安装步骤如下: 1.yum install ...

  4. hibernate对数据库查询的坑

    hibernate对数据库的查询其实有很多种方法,下面我来介绍我知道的两种方法,以及它们可能会遇到的问题,这里前两种都是查询所有结果 最后一种是 使用hibernate查询一条记录. 第一种方法 pu ...

  5. 可重入函数reentrant function

    可重入函数主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数:而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能 ...

  6. DOS中命令的格式

    ---------------siwuxie095 一.DOS中,命令使用格式的一般形式 用中文表达的形式为: [路径]  关键字  [盘符]  [路径]  文件名  [扩展名]  (参数)  [参数 ...

  7. XAMPP下apache部署网站,多个虚拟机(空间)配置

     之 前在 Mac 下一直使用 MAMP 搭建本地 php 环境,因为其强大的组合配置以及方便的 UI 操作.因为公司的电脑是 Windows 的,有时候需要搭建 php 环境来调试一些小东西方便自己 ...

  8. maven打包部署到私服

    转载地址:http://blog.csdn.net/stormragewang/article/details/43407471 心得 apache的开源maven插件对我们使用maven进行打包,发 ...

  9. tp中url地址大小写问题

    在tp配置文件中有一个URL_CASE_INSENSITIVE选项,设置为true,表示大小写不敏感. 'URL_CASE_INSENSITIVE' => true

  10. 安装phpcms时出现Warning: ob_start(): output handler \'ob_gzhandler\' conflicts with \'zlib

    1. 解决方法一: 打开phpcms/base.php,在第57行,修改如下: if(pc_base::load_config('system','gzip') && function ...