AndroidManifest.xml 是每个android程序中必须的文件。它位于application的根目录,描述了package中的全局数据,包括了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。
此文件一个重要的地方就是它所包含的intent-filters。这些filters描述了activity启动的位置和时间。每当一个 activity(或者操作系统)要执行一个操作,例如:打开网页或联系簿时,它创建出一个intent的对象。它能承载一些信息描述了你想做什么,你想处理什么数据,数据的类型,和一些其他信息。Android比较了intent对象中和每个application所暴露的intent-filter中的信息,来找到最合适的activity来处理调用者所指定的数据和操作。关于intent的更多信息请访问Intent参考页面。
除了能声明你程序中的Activities, Content Providers, Services, 和Intent Receivers,你还能指定permissions和instrumentation(安全控制和测试)在AndroidManifest.xml文件中。请见AndroidManifest标记和属性的参考。
这是一个简单的AndroidManifest.xml。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.my_domain.app.helloactivity">
<application android:label="@string/app_name">
<activity class=".HelloActivity">
<intent-filter>
<action android:value="android.intent.action.MAIN"/>
<category android:value="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
值得一提一些常用之处:
* 几乎所有的AndroidManifest.xml(以及许多其他Android的xml的文件)在第一个元素中包含了命名空间的声明 xmlns:android="http://schemas.android.com/apk/res/android"。这样使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据。
* 大部分manifests包含了单个<application>的元素,它定义了所有的application级别组件和属性,并能在package中使用。
* 任何被用户看作顶层应用程序,并能被程序启动器所用的package,需要包含至少一个Activity组件来支持MAIN操作和LAUNCHER种类,如上述代码中所见。
这里是AndroidManifest.xml文件结构的一个详细的列表,描述了所有能被使用的标记。
manifest
根节点,描述了package中所有的内容。在它之下能放置:
uses-permission
请求你的package正常运作所需赋予的安全许可。见Security Model来获得许可的更多的信息。一个manifest能包含零个或更多此元素。
permission
声明了安全许可来限制哪些程序能你package中的组件和功能。见Security Model来获得许可的更多的信息。一个manifest能包含零个或更多此元素。
instrumentation
声明了用来测试此package或其他package指令组件的代码。见Instrumentation来获得许可的更多的信息。一个manifest能包含零个或更多此元素。
application
包含package中application级别组件声明的根节点。此元素也可包含application中全局和默认的属性,如标签,icon,主题,必要的权限,等等。一个manifest能包含零个或一个此元素(不允许多余一个)。在它之下能放置零个或更多下列组件声明:
activity
Activity是用来与用户交互的主要工具。当用户打开一个应用程序的初始页面时一个activity,大部分被使用到的其他页面也由不同的activity所实现并声明在另外的activity标记中。
注意:每一个activity必须要一个<activity>标记对应,无论它给外部使用或是只用于自己的package中。如果一个activity没有对应的标记,你将不能运行它。
另外,为了支持运行时迟查找你的activity,你能包含一个或多个<intent-filter>元素来描述你activity所支持的操作:
intent-filter
声明了指定的一组组件支持的Intent值,从而形成了IntentFilter。除了能在此元素下指定不同类型的值,属性也能放在这里来描述一个操作所需的唯一的标签,icon和其它信息。
action
组件支持的Intent action。
category
组件支持的Intent Category.
type
组件支持的Intent data MIME type.
schema
组件支持的Intent data URI scheme.
authority
组件支持的Intent data URI authority.
path
组件支持的Intent data URI path.
receiver
IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。利用activity标记,你能选择地包含一个或多个receiver所支持的<intent-filter>元素;
service
Service是能在后台运行任意时间的组件。利用activity标记,你能选择地包含一个或多个receiver所支持的<intent-filter>元素;
provider
ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。
分享到:
相关推荐
二进制的`AndroidManifest.xml`(也称为AXML)是经过编译和优化的,以便于设备更快地解析和运行。 **AXML结构:** AXML是一种二进制XML格式,由Android系统用于存储应用程序资源。它包括元素、属性、字符串池和颜色...
Android反编译工具是用来解析和反编译APK文件的,它可以将APK的二进制资源转换为可读的源代码和XML文件。Apktool是一款流行的Android反编译工具,它支持对APK进行拆解、修改和重新打包。通过Apktool,我们可以轻松地...
### AndroidManifest.xml 文件解析知识点 #### 一、概述 `AndroidManifest.xml` 是 Android 应用的核心配置文件,它位于应用项目的根目录下。该文件主要用于描述应用的基本信息及其组件,比如 Activity、Service、...
`AXMLPrinter2.jar`是一个XML解析工具,能够将Android的二进制XML(AXML)文件转换成可读的文本格式,这对于查看和理解`AndroidManifest.xml`的原始二进制形式非常有用。开发者可以使用它来查看那些在标准文本编辑器...
在Java编程中,可以使用`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers.DocumentBuilder`类来解析`AndroidManifest.xml`文件,然后通过`TransformerFactory`和`Transformer`将XML文档转换为不同的...
Android教程之AndroidManifest.xml文件 详细介绍及用法解析
`AXMLPrinter2.jar`是一个Java可执行文件,可以解析APK文件中的AXML(Android XML)格式,并将其转换为可读的XML格式。以下是使用`AXMLPrinter2.jar`反编译`AndroidManifest.xml`的基本步骤: 1. 首先,你需要将...
详细阐述androidmanifest.xml各个属性的含义和用法
1. **XML解析**:`AndroidManifest.xml`是一个XML文档,`AXMLPrinter2`通过解析XML结构,将其转换为纯文本,使得开发者可以不依赖于XML解析器直接查看其内容。 2. **二进制XML与文本XML**:在APK打包过程中,`...
6. **备用方案**:如果`AXMLPrinter`不可行,可以寻找其他XML解析库,比如`dom4j`、`jdom`等,它们提供了更丰富的异常处理机制。 理解`AndroidManifest.xml`的结构和作用,以及如何正确解析它是Android开发中的重要...
AndroidManifest.xml 文件解析 AndroidManifest.xml 文件是每个 Android 程序中必须的文件,位于整个项目的根目录,描述了 package 中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的...
最近用c#做apk采集,需要解析采集后的android包名和版本号,网上搜了很久只有java版本,尝试自己写了下,比较麻烦,索性网上找了java转c#的方法,把AXMLPrinter2.jar给转成了dll,看到不少人也需要这个,发来共享一下
在Android应用开发中,通常每个Activity都需要在AndroidManifest.xml文件中进行注册,以便系统能够知道它们的存在并管理它们的生命周期。然而,在某些特殊情况下,开发者可能会选择不将某个Activity注册在清单文件中...
本篇将详细讲解如何利用`aapt.exe`来解析APK中的`AndroidManifest.xml`文件,以及如何通过Java调用`aapt.exe`获取更全面的信息,包括图标名称等。 `AndroidManifest.xml`是每个APK的核心组件,它定义了应用的基本元...
AXMLPrinter是一个用于解析和打印Android二进制XML文件的工具,它可以将二进制XML转换成人类可读的文本格式。 要使用AXMLPrinter,你需要以下步骤: 1. 获取AXMLPrinter工具:AXMLPrinter通常作为Apktool的一部分...