Manifest这个英文单词的意思如下:
n. 载货单, 运货单, 旅客名单
adj. 显然的, 明白的
vt. 显示, 证实, 出示
adj. 显然的, 明白的
vt. 显示, 证实, 出示
很显然,android中是取的第一个含义(即名词),也就是说这个文件其实就是一份清单。
描述了我们的应用程序有些什么,当然还有其他的比如运行环境的说明。
其实就跟C#(.net)中的webconfig作用差不多的。
下面是我一个例子中的AndroidManifest
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="demo.setdefaultkeymode"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk android:minSdkVersion="14" />
8
9 <application
10 android:icon="@drawable/ic_launcher"
11 android:label="@string/app_name" >
12 <activity
13 android:label="@string/app_name"
14 android:name=".SetDefaultKeyModeActivity" >
15 <intent-filter >
16 <action android:name="android.intent.action.MAIN" />
17 <category android:name="android.intent.category.LAUNCHER" />
18 </intent-filter>
19 </activity>
20
21 <activity
22 android:label="@+string/shortcuttest"
23 android:name=".ShortCutActivity">
24 </activity>
25
26 </application>
27
28 </manifest>
分析:
第1行是说明版本号,字符集等。字符集有很多种,可以百度或者google一下。
第2-5行, 说明了package(包),C#中叫命名空间,其实差不多。
第7行, 说明了SDK的版本是14(Android 4.0)。
第10行, 说明了应用在Android桌面中显示的图标,显示的图标在res/drawable目录下的ic_lancher.png,这个可以自己改,但是名字必须是drawable目录下的。
第11行, 说明了应用程序显示的名字,lable标签,对应的app_name在res/values目录下的strings.xml中可以找到。
第12-24行, 列举了两个Activity, 两个Activity对应了两个类名,这里必须是这样的格式,我曾经试图将前缀“.”去掉,结果报错。
感觉这个“.”有点像目录中当前目录的标识,这里标识的是当前命名空间。
第一个Activity和另两个不同,最显著的是intent-filter段,第15行表明这是应用启动的第一个Activity,是不是有 点C语言中Main函数的味道?
你也可以理解为应用程序的入口。每一个应用至少有一个Activity被定义为MAIN. 注意到另外一个个Activity没有intent-filter,其实是可以有的,
只是这里我的程序中用不着。关于intent-filter,网上也有 比较详细的描述,暂时这里也不详细介绍了。