它命名为应用程序的Java包。包的名称作为一个应用程序的唯一标识符。
它描述了应用程序的组件-的活动,服务,广播接收机,内容提供商,应用程序组成。它命名的类,实现每个组件,并出版自己的能力(例如,他们可以处理哪些意图的消息)。这些声明让Android系统知道的组件是什么和在什么条件下,他们可以推出。
它决定哪些进程将主机应用程序组件。
它宣称,应用程序必须有权限才能访问受保护的API部分,并与其他应用程序进行交互。
它还宣布,其他人则需要以与应用程序的组件交互的权限。
它列出了仪器仪表类,提供了分析和其他信息的应用程序正在运行。这些声明是在清单中,只有当应用程序正在开发和测试;申请公布之前,他们正在拆除。
它宣布的Android API的应用程序需要的最低水平。
它列出了库,应用程序必须与配对。
结构编辑
下图显示了manifest文件和每一个元素,它可以包含的一般结构。每个元素,连同其所有属性记录在一个单独的文件。要查看有关的任何元素的详细信息,单击图中的元素的名称,在按字母顺序排列的列表,如下图,或任何其他元素的名称提到的元素。
<?XML版本= “1.0” 编码= “UTF-8” ?>
下面列出的所有元素可以出现在manifest文件中按字母顺序排列。这是唯一合法的元素,你不能添加自己的元素或属性。
约定
一些公约和规则普遍适用于清单中的所有元素和属性:
分子
只有
一般不会下令在同一级别的元素。例如,
属性
在正式意义上说,所有的属性都是可选的。不过,也有一些必须指定为元素,以实现其目的。使用的文件,作为指导。对于真正的可选属性,它提到一个默认值或规范的情况下发生的事情。除了 根属性
名称
许多元素对应到Java对象,包括应用程序本身的元素( 的
<清单。。> <应用程序。。> <服务机器人:名称= “com.example.project.SecretService” 。。。>。。。</服务>。。。</申请> </清单>然而,作为一个缩写,如果字符串的第一个字符是一个句号,该字符串附加到应用程序的包名(由指定
<清单的包= “com.example.project” 。。> <应用程序。。> <服务机器人:名称= “。SecretService” 。。。>。。。</服务>。。。</申请> </清单>Android的组件启动时,创建一个命名的子类的实例。如果没有指定一个子类,它创建一个基类的实例。
多个值
如果可以指定多个值,元素几乎总是重复的,而不是在一个单一的元素列出多个值。例如,一个意图过滤器可以列出几个动作:<意图过滤器。。。。。</意图过滤器>资源值一些属性,可以向用户显示的值 - 例如,一个标签和一个活动的图标。这些属性的值应本地化,因此从资源或主题。资源值表示在下面的格式,[ 包:] 类型:名称
如果资源是在应用程序相同的包, 其中包名称可以省略,类型是一个类型的资源-如“串”或“绘制” - 名称是名称标识的特定资源。例如:
< 活动:图标= “@绘制/ smallPic” 。。。>以类似的方式表达主题值,但与最初的“ ? “ 而不是“ @ “:
[ 包:] 类型:名称
字符串值如果属性值是一个字符串,双反斜杠(' \ \ ')必须使用转义字符-例如,“ \ \ N “一个换行符或” \ \ uxxxx“的Unicode字符。
功能
以下各节描述了一些Android的功能是如何体现在manifest文件中。
意图过滤器
应用程序(它的活动,服务和广 播接收机)的核心部件,被激活的意图。意图是信息(捆绑意向书,描述了一个理想的行动对象) -包括要采取行动时,组件类别的数据,应执行的行动,和其他有关说明。机器人找到一个合适的组件回应的意图,启动一个新的组件实例,如果需要的话,它传递的Intent对象。
组件宣传他们的能力-他们能够应对各种意图的意图过滤器 -通过。由于Android系统必须学习一个组件可以处理其中的意图之前推出的组件,意图过滤器指定在清单
意图明确命名一个目标组件将激活该组件;过滤器并没有起到作用。但意图不指定目标的名字,可以激活一个组件,只有当它可以通过组件的过滤器之一。
意向对象是如何对意图过滤器测试的信息,看到一个单独的文件, 意图和意图过滤器。
图标和标签
一些元素可以向用户显示一个小图标和文本标签的图标和标签属性。有些也有 描述较长的说明性文本,也可以在屏幕上显示的属性。例如,在
在任何情况下,包含元素的图标,并在标签集变成默认的 图标和标签设置为容器的所有子元素。因此,在设置的
被用来代表一个组件时,该组件实现广告过滤器的功能,向用户意图过滤器设置的图标和标签。例如,一个“过滤器android.intent.action.MAIN “和” android.intent.category.LAUNCHER “设置广告作为一个,启动一个应用程序的活动-即是,作为一个在应用程序启动器应显示。在过滤器中设置的图标和标签,因此在发射器上显示的。
权限
一个权限是一种限制,限制访问代码的一部分,或在设备上的数据。施加的限制,以保护关键数据和代码可能被滥用,扭曲或损害了用户体验。
每个权限确定一个唯一的标签。标签往往表示,这是限制的行动。例如,这里是由Android定义了一些权限:
android.permission.CALL_EMERGENCY_NUMBERS
android.permission.READ_OWNER_DATA
android.permission.SET_WALLPAPER
android.permission.DEVICE_POWER
一个功能可以保护最多一个权限。
如果应用程序需要访问权限保护功能,它必须声明,它需要 在清单与权限
应用程序还可以保护自己的组件(活动,服务,广播接收机,内容提供商)与权限。它可以采用任何定义的Android(在列出的权限 android.Manifest.permission)或其他应用程序申报。或者也可以定义自己的。一个新的权限宣布与
<清单。。>:许可机器人:名称= “com.example.project.DEBIT_ACCT 。。/> <用途许可机器人:名称= “com.example.project.DEBIT_ACCT” />。。。<应用程序。。。。>。。。</活动> </申请> </清单>请注意,在这个例子中,DEBIT_ACCT许可不仅宣布
同样的例子,如果在宣布在别处(例如作为android.permission.CALL_EMERGENCY_NUMBERS权限,权限属性设置,它不会有必要宣布它再次
库
每一个应用程序连接到默认的Android库,其中包括建筑应用(如活动,服务,意图,查看“按钮,应用,ContentProvider的,等通用类)的基本包。
然而,一些软件包驻留在自己的图书馆。如果您的应用程序使用这些包有任何的代码,它必须明确要求对他们联系。舱单必须包含单独
MANIFEST 系统文件
C:\WINDOWS\WinSxS\Manifests\下有许多XML格式的manifest文件,这些是服务端的程序清单。WinSxs是windows XP以上版本提供的非托管并行缓存,里面安装了各种版本的经过强文件名签名的系统库,这些文件正是标注了系统中的强文件名签名,如果与manifest 清单里面所列出的依赖项对上的话,就会被加载。
C:\WINDOWS\WinSxS\Manifests\是一个重要的系统文件夹,不能删除!