首页 技术 正文
技术 2022年11月14日
0 收藏 989 点赞 2,161 浏览 1454 个字

写过java程序的人,都知道了配置文件时java实现各种各样的框架的一大利器,manifest清单文件对android的作用自然不言而喻,然而他里面究竟定义了些什么,并且他是如何加载到程序中的。

他里面定义了什么了,定义的无非是一些android程序配置的节点信息。我们打开他的开发文档,能够精确的看到清单文件的定义。

android中manifest文件的定义为。

<?xmlversion=”1.0″encoding=”utf-8″?>

<manifest>

<application>

<activity>

<intent-filter>

<action/>

<category/>

</intent-filter>

</activity>

<activity-alias>

<intent-filter></intent-filter>

<meta-data/>

</activity-alias>

<service>

<intent-filter></intent-filter>

<meta-data/>

</service>

<receiver>

<intent-filter></intent-filter>

<meta-data/>

</receiver>

<provider>

<grant-uri-permission/>

<meta-data/>

</provider>

<uses-library/>

</application>

<uses-permission/>

<permission/>

<permission-tree/>

<permission-group/>

<instrumentation/>

<uses-sdk/>

<uses-configuration/>

<uses-feature/>

<supports-screens/>

</manifest>

通过上面组织结构,我们能够清晰看到<application>是程序的第一层,他意味着所有的子节点由他包裹。他是程序的根节点。

而android的四大对象,activity,service,receiver,provider并列组成了相应的第二级,他们才能使android程序由冰冷冷的源代码变的栩栩如生。

此外他还定义了一些android程序支持的附加属性,如对用户权限限制的<uses-permission/>,对用户屏幕尺寸及分辨率限制的 <supports-screens/>。这样就是较为完整的manifest的清单文件的构件。对于他的结构,我不想做过多赘述,因为这百度一下,遍地都是。

我们来通过源代码的分析,看他是如何加载到程序中,如何运行的了。

他主要是通过packagemanager这个包加载器来对程序进行加载。他大概源代码预览是这样的:

又议android中的manifest清单文件

packagemanager的源代码很多,我们这里这里只看他的一两个方法

public abstract XmlResourceParser getXml(String packageName, int resid,
            ApplicationInfo appInfo);

这是一个抽象方法,他定义了从xml文件中,来加载相应的包的信息,和application的相关的信息了,那这个文件是什么,那就是manifest文件了。怎么解析xml,不想多说了。

那他碰到这节点,是怎么进行实例化的。采取按需实例化的原则了,怎么符合嵌入式软件设计的原则了,能够节省内存开销,提高执行效率。

这就是我对manifest清单文件的一点了解,恳请大家指教。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,966
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,487
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,332
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,115
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,748
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,783