每个android项目都包含一个AndroidMainfest.xml文件,它包含了组成应用程序的每一个Acitivity、Service、Content Provider和Broadcast Receiver的节点,并使用Intent Filter 和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的。
1.根节点manifest:
package属性:当前应用的包名
versionCode属性:将当前应用程序的版本定义为一个整数,每次版本迭代时,该数字都会增加
versionName属性:定义一个显示给用户的公共版本号
installLocation属性:指定是否允许(或者首选)将应用程序安装到外部存储器(通常为SD卡)。其值可以为:preferExternal或auto,使用前者,只要有可能就会把应用程序安装在外部存储器上,后者则由系统决定。若不指定installLocation属性,则将当前应用安装到内部存储器,而不能将其移动到外部存储器。
如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.csc.mydemo"
android:versionCode="1"
android:versionName="1.0 Beta"
android:installLocation=”preferExternal”>
</manifest>
2.manifest的常见子节点:
1)uses-sdk:
如:<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="14" />
minSdkVersion属性:指定应用要求的最低SDK版本,未指定,则默认为1
maxSdkVersion属性:最高SDK版本,一般最好不要指定,除非知道应用在更新版本的平台上肯定不能正确运行。
targetSdkVersion属性:用于指定开发和测试中所使用的平台版本。即使应用程序没有使用任何新的API,也应当将目标SDK设为最新的平台版本,这被认为是一种最佳实践。
2)uses-permission:
配置应用程序所需要的权限,在安装应用程序时,设定的所有权限将会告诉给用户,由他们来决定是否同意安装使用。
如:<uses-permission android:name="android.permission.INTERNET"/>需要网络权限
3)instrumentation:
单元测试时,用到
如:<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.csc.demo" />指定要测试的包名
4)application:
一个mainfest文件只能有一个application节点,它的属性和子节点都比较常用
3.application节点:
如:<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
icon属性:指定当前应用程序的图标
label属性:指定当前应用程序的标题
1)activity子节点:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
应用程序中用到的每一个Activity都要求有一个Activity子节点,启动一个没有在Manifest中定义的Activity时都会抛出一个运行时异常。每个Activity节点都允许使用intent-filter子节点来定义用于启动该Activity的Intent。
name属性:指定Activity类的名字
2)service子节点:应用程序使用的service
3)provider子节点:应用程序使用的Content Provider
4)receiver子节点:引用程序使用的Broadcast Receiver
5)uses-library子节点:用于指定应用程序需要的共享库