Android-系统解析AndroidManifest
在上一篇博客,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的更多相关文章
- Android源代码解析之(十三)-->apk安装流程
转载请标明出处:一片枫叶的专栏 上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定文件夹.解析apk文件并安装的过程,这个安装过程实 ...
- Android系统init进程启动及init.rc全解析
转:https://blog.csdn.net/zhonglunshun/article/details/78615980 服务启动机制system/core/init/init.c文件main函数中 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551 Android系统Recovery工作原理之使用update.zip升级过程分 ...
- Android View系统解析(下)
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/38426471(来自singwhatiwanna的csdn博客) Androi ...
- Android核心服务解析篇(三)——Android系统的启动
从大的方面来说.Android系统的启动能够分为两个部分:第一部分是Linux核心的启动,第二部分是Android系统的启动. 第一部分主要包含系统引导,核心和驱动程序等,因为它们不属于本篇要讲的内容 ...
- android系统架构解析
以上是我在这个课题下的一些参考博客或者网页链接.里面有对于android架构的一些较好的分析理解,接下来是楼主在阅读后自己的一些整理. Android采用层次化系统架构,官方公布的标准架构如下图所示. ...
- 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速
作者:唐老师,华清远见嵌入式学院讲师. Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新 版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们 ...
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现 ...
- android系统如何自适应屏幕大小
1.屏幕相关概念 1.1分辨率 是指屏幕上有横竖各有多少个像素 1.2屏幕尺寸 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 android将屏幕大小分为四个级别 ...
- Android系统默认Home应用程序(Launcher)的启动过程源码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还须要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...
随机推荐
- https://developer.mozilla.org/
Document/querySelector https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelector
- Linux查看内存使用情况
输入:top PID:进程的ID USER:进程所有 PR:进程的优先级别,越小越优先被执 NInice: VIRT:进程占用的虚拟内 RES:进程占用的物理内 SHR:进程使用的共享内 S:进程的状 ...
- sublimetext 2 编译文件带input时 提示 EOFError: EOF when reading a line
昨天在网下下载了个什么sublimetxt 2 的破解版,然后让我折腾了半天,没错 ,就是因为这个 EOFError: EOF when reading a line错误让我搞的半死.怨自己,贪图中文 ...
- 解决SpringBoot中webScocket不能注入bean的问题
最近在做websocket聊天,但是遇到一个问题,就是在websocket的服务中要调用Service层的东西.首先我想到的是通过@Autowire注解来实现bean的注入.但是进过测试发现,注入的b ...
- 未能加载文件或程序集“AjaxControlToolkit”或它的某一个依赖项
对于这个问题,网上的解答都大同小异,最多的就是Bin文件夹下没有dll文件,引用路径问题.但我碰到的问题偏偏不是这个,而是没有一个人给出方法的问题.其实问题很简单,也很低级:IIS上发布网站的时候把整 ...
- 【Python基础教程第2版】——第一讲:基础知识
1.长字符串:(用三引号如'''或者"""来引起来) >>> print """This is a very log st ...
- PAT L2-005 集合相似度(模拟集合set)
给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输 ...
- [leetcode]689. Maximum Sum of 3 Non-Overlapping Subarrays三个非重叠子数组的最大和
In a given array nums of positive integers, find three non-overlapping subarrays with maximum sum. E ...
- 动态加载JS,并执行回调函数
有些时候我们需要动态的加载一些JS,并在JS加载完成后执行一些回调函数. var loadscript = { $$: function (id) { return document.getEleme ...
- adf 笔记
1>jsf在bean中如何获取url参数,注意bean的范围,如果存在分页,范围不能设置为request,否则第二次加载的时候参数会为空. 最小设置为view,在当前页面中一直有效. 方法一:F ...
