每一个 Android 项目都包含一个清单(Manifest)文件 AndroidManifest.xml,它是 XML 格式的 Android 程序声明文件,每个 Android 程序必须在根目录下包含一个 AndroidManifest.xml。
AndroidManifest.xml 包含 Android 系统运行程序前所必须掌握的重要信息,这些信息包含应用程序名称、图标、包名称、模块组成、授权和 SDK 最低版本等。
例如,Manifest 文件可以使用如下代码声明一个 Activity:
AndroidManifest.xml 中可包含的所有标签元素如以下代码所示,其中除了 <manifest> 和 <application> 标签是必需的,其他所有标签都可按情况添加。
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<uses-configuration />
<uses-feature />
<supports-screens />
<compatible-screens />
<supports-gl-texture />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</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 />
<path-permission />
</provider>
<uses-library />
</application>
</manifest>
在此,仅对几种常见的标签进行简单介绍。
manifest 标签是 AndroidManifest.xml 文件的根标签。
manifest 标签用于设置与项目相关的一些属性,比如用于唯一标识应用程序的 package 属性,用于记录应用程序版本的 Android:versionName 属性等等。其中的 xmlns:Android 属性必须被定义为“http://schemas.Android.com/apk/res/Android”。
manifest 标签仅能包含一个 application 标签。
manifest 标签使用各种属性来指定应用程序的各种元数据(包括标题、图标和主题)。它还可以作为一个包含活动(Activity)、服务(Service)、内容提供器(Provider)和广播接收器(Broadcast Receiver)标签的容器,用来指定应用程序组件。
application 标签还可以包含很多子标签,下面我们来介绍一下它的子标签。它的子标签如下:
作为安全模型的一部分,uses-permission 标签声明了那些自己定义的权限,而这些权限是应用程序正常执行所必需的。在安装程序时,设定的所有权限将会告诉用户,由他们来决定同意与否。
对很多本地Android服务来说,权限都是必需的,特别是那些需要付费或者有安全问题的服务(例如拨号、接收 SMS 或者使用基于位置的服务)。第三方应用程序,包括你自己的应用程序,也可以在提供对共享的程序组件进行访问之前指定权限。
在可以限制访问某个应用程序组件之前,需要在清单中定义一个 permission。
可以使用 permission 标签来创建这些权限定义。然后,应用程序组件就可以通过添加 Android: permission 属性来要求这些权限。其他的应用程序需要在它们的清单中包含 uses-permission 标签(并且通过授权),之后才能使用这些受保护的组件。
在 permission 标签内,可以详细指定允许的访问权限的级别(normal、dangerous、signature和signatureOrSystem)、一个 label 属性和一个外部资源,这个外部资源应该包含对授予这种权限的风险的描述。
instrumentation 类提供一个框架,用来在应用程序运行时在活动或者服务上运行测试。
instrumentation 类提供了一些方法来监控应用程序及其与系统资源的交互。对于为自己的应用程序所创建的每一个测试类,都需要创建一个新的节点。