当android启动一个应用组件之前,必须通过读取应用的ManifestAndroid.xml文件来确认该组件的存在。在manifest文件中必须包含该应用的所有组件。并且manifest文件必须位于应用项目的根目录下。此外,还提供如下功能:
- 标识应用需要的用户许可,比如:internet访问,对用户通讯录的读取
- 声明应用需要的最小最小API级别
- 声明应用需要的硬件和软件特征,比如:相机,蓝牙服务,多点触摸屏
- 声明应用需要的API库,比如Google Maps库
声明组件
程序中用到的activity,service和content provider必须在manifest文件中进行声明,否则系统无法找到,也永远不会运行。broadcast receiver既可以在manifest文件中声明,也可以在代码中动态创建(BroadcastReceiver对象)和注册(调用registerReceiver方法)。
声明组件的能力
声明组件的时候,可以通过指定〈intent-filter〉来声明组件响应intent的能力。比如:可以为邮件应用中的撰写新邮件activity指定intent-filter,来响应send intent。然后在你的应用中可以创建一个带有send action的intent,并调用startActivity方法,此时,系统就会根据intent匹配到撰写新邮件activity。
声明应用需要
- 屏幕大小和分辨率〈supports-screens〉
- 输入配置,比如:硬键盘,跟踪球,5向导航板〈uses-configuration〉
- 设备特征,比如:照相机,亮度感应器,蓝牙,某个版本的OpenGL〈uses-feature〉
- 操作系统版本,比如:android 1.6,android 2.3,因为每个新版本都会追加一些新的api,所以每个操作系统版本都对应一个API Level,比如:android 1.0对应API Level 1,android 2.3对应API Level 9〈uses-sdk〉
应用资源
一个android应用除了代码以外,还包括许多资源文件,比如图片,声音文件,定义menu,color,style,layout用的xml文件。项目中的每个资源,sdk build工具都会生成一个唯一的整型ID,这样就可以在代码中通过ID引用资源。比如:res/drawable下有一个logo.png文件,那么SDK工具会生成一个R.drawable.logo资源ID。
引入资源文件的另一个重要的作用是:你可以根据不同的设备配置指定相应的资源文件,比如:根据用户的语言设置,选用相应语言的配置文件,也就是可以支持多语言。还有,可以针对横屏和竖屏,选用不同的layout配置文件。