写过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这个包加载器来对程序进行加载。他大概源代码预览是这样的:

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

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

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

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

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

转载于:https://www.cnblogs.com/manuosex/p/3216307.html

又议android中的manifest清单文件相关推荐

  1. 【错误记录】Manifest 清单文件报错 ( ..required to specify an explicit value for `android:exported` when the .. )

    文章目录 一.报错信息 二.解决方案 一.报错信息 修改 AndroidManifest.xml 清单文件时 , 发现合并清单文件时报错 , 该报错不影响程序运行 ; 报错信息 : Merging E ...

  2. Windows COM 免注册 manifest 清单文件

    一.原理 XP以上的操作系统支持COM免注册技术,操作系统在加载EXE时会自动扫描是否包含配套的manifest信息,若有则读取manifest内容加载组件,否则读取注册表. manifest描述了E ...

  3. Android中对Log日志文件的分析

    Android中对Log日志文件的分析 如何分析和研究Log文件 ,如何看日志信息 Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没 ...

  4. android 文件删除命令大全,Android中删除sdcard里文件的命令

    Android中删除sdcard里文件的命令 有时我们需要删除android模拟器或手机上的sd卡文件,特别是模拟器上的,这时我们就需要借助于一些命令来帮助我们删除文件. 复制代码 代码如下: #重新 ...

  5. JAR包中的MANIFEST.MF文件详解以及编写规范

    JAR包中的MANIFEST.MF文件详解以及编写规范 参考百度百科的解释如下: http://baike.baidu.com/item/MANIFEST.MF MANIFEST.MF:这个 mani ...

  6. android 大文件加密,如何在android中加密大视频文件

    我有一个应用程序,我正在使用该代码来解密已加密的文件.文件位置是"/mnt/sdcard/myfolder/test.mp4". test.mp4文件大小约为20MB.如何在and ...

  7. android raw文件作用,Android 中raw和assets文件夹的区别

    Android 中raw和assets文件夹的区别 发布时间:2020-09-25 08:40:41 来源:脚本之家 阅读:103 作者:lqh Android 中raw和assets文件夹的区别 以 ...

  8. Android中关于Manifest的权限注册问题

    每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名是固定的并且放在每个Android应用的根目录下.它定义了该应用对于Android系统来说一些非 ...

  9. Android学习笔记之清单文件

    一.清单文件 引入 如果创建多个Activity,那如果保证MainActivity是第一个运行的呢? 这就需要用到清单文件了 正文 以下是在清单文件AndroidManifest.xml中编译器自动 ...

  10. Android中aar和jar文件的认识

    在Android开发中,我们总是会引入其他第三方的库或者资源等,有时候是添加一个jar文件,有时候添加一个aar文件,那么这两种类型的文件有什么区别吗?详情请看下文. 一.描述. 1.   *.jar ...

最新文章

  1. deepin关机卡桌面_喜大普奔:发现一个惊艳的电脑操作系统Deepin
  2. ASP.NET WebForm中使用WebApi
  3. ANTLR VS FLEXBISON
  4. 这个宝藏工具,会给你一种黑客般的感觉
  5. Tomcat启动项目没问题,网页一片空白
  6. C#模拟js的Json对象创建,操作
  7. Android可收缩伸展的Expandable分组RecyclerView
  8. 【进阶版】 机器学习之主成分分析(PCA)、MDS算法、核化线性降维 (16)
  9. Swift学习笔记 (四十二) 不透明类型
  10. 产品管理NeoceanI网络存储产品开局指导书
  11. matlab读取excel数据
  12. 人工智能时代,数据分析如何帮助预测业务未来?
  13. mysql 实现lead_MYSQL 代替lead()的寫法?
  14. Flex布局之flex:1
  15. 网站被挂马植入webshell导致网站瘫痪案例
  16. A4 纸张上打印预览
  17. 跨域问题解决方案——亲测有效
  18. html3d模型渲染,【SVG】纯clip-path打造的3D模型渲染器
  19. 微信小程序前端使用又拍云存储上传图片
  20. 用六顶思考帽思考问题 20171201

热门文章

  1. 新版本chrome浏览器带来的跨域请求cookie丢失问题
  2. java -jar命令
  3. js判断对象是否为空或对象的属性是否为空
  4. d触发器q端的输出波形_如果把D触发器的输出Q'反馈连接到输入D,则输出Q的脉冲波形的频率为CP脉冲频率f的 。...
  5. 5.4使用Mockito to mock来测试
  6. 关于柯西许瓦兹不等式的一些思考
  7. TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS
  8. Springboot集成SpringData JPA
  9. CentOS云主机安全之新增ssh登录账户、禁止ROOT登陆
  10. Python包管理工具pip的基本使用