Android 程序清单文件详解
每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名是固定的并且放在每个Android应用的根目录下。它定义了该应用对于Android系统来说一些非常重要的信息。Android系统需要这些信息才能正常运行该应用。Android程序清单文件主要具有下面作用:
· 它给应用程序Java包命名,这个包名作为应用程序唯一标识符。
· 它描述了应用程序中的每个程序组件—Activity,Service,Broadcast Receivers和Content Provider。它描述了实现每个应用程序组件的类名称和组件能力(比如组件能够处理哪种类型的Intent消息)。这些描述帮助Andoid操作系统了解这些程序组件和在何种条件下可以启动这些程序组件。
· 它决定哪些进程用来运行应用程序组件。
· 它描述了应用程序使用某些受保护的程序API或和其它应用程序交互所需的权限。
· 它也描述了其它应用程序和该应用交互时应拥有的权限。
· 它列出了Instrumentation类用于提供应用程序运行时一些性能统计和其它信息。这些生命只在测试或开发应用时使用。在发布应用时应该删除。
· 它给出了应用运行所需AndroidAPI版本的最低要求。
· 它列出了应用程序需要调用的开发库定义。
清单文件结构
下面XML代码给出了程序清单文件的基本结构以及它所能包含的所有元素。每个元素及元素支持的属性可以参考Android开发文档。
<manifest . . . > <permission android:name="com.example.project.DEBIT_ACCT" . . . /> <uses-permission android:name="com.example.project.DEBIT_ACCT" /> . . . <application . . .> <activity android:name="com.example.project.FreneticActivity" android:permission="com.example.project.DEBIT_ACCT" . . . > . . . </activity> </application></manifest>
值得注意的是,在本例中DEBIT_ACCT权限不仅仅使用<permission>给出了定义,使用它时还需要使用<uses-permission>元素来声明。对该权限的使用必须事先请求以实现其它应用能够启动这个受保护的Activity。
如果例子中使用的permission属性设置为由其它地方定义的权限(比如android.permission.CALL_EMERGENCY_NUMBER) ,那么就没有必要再使用<permission>声明。然而依然需要通过<uses-permission>来请求权限。
<permission-tree>元素定义了定义在代码中一组权限的命名空间,而<permission-group>定义了一组权限的标题。它们只影响如何将这些权限分组显示给用户。元素<permission-group>没有定义哪个权限属于哪个分组,而只是定义了权限分组的名称。一个权限通过<permission>元素的<permissionGroup>属性来定义其属于哪个分组。
开发库
每个Android应用都链接到缺省的Android开发库,这个库包括构造应用的基本开发包(包含Activity,Service,Intent,View,Button,Application,ContentProvider等类定义)。
然而,某些开发包有自己独立的库文件。如果你的应用使用了这些开发包,必须在程序清单中明确申明需要链接到这些库文件。对于使用到的开发包,在清单文件中使用不同的<uses-library>元素来声明。