API:The Manifest class is used to obtain attribute information for a JarFile and its entries.
大概意思:Manifest是为Java文件提供属性信息和入口的一个类。
为什么要写这个?因为他很重要,类似C/C++的头文件。举个例子来说,我们把System看成一个大车间,把Manifest看成一张领货单,我们做应用的时候,首先,要把各种工具,零件备齐,如果在生产过程中缺少什么零件的话,那么后果可想而知;也就是说,当我们的程序运行起来的时候,系统会先核对Manifest文件,看看里面都有些什么,然后在运行我们的Java文件时,当我们的Java文件用到的东西超出了Manifest的描述,系统就会报出各种各样的错误,比如:空指针、权限Exception、版本问题(Call requires API level 19 (current min is 8):android.animation.ObjectAnimator#pause)等。
关于版本问题:一般出现在代码中,一般是指当前最低版本不能解决问题,要求更高的最低版本;
关于权限问题:这个在RuntimeException中会明确的指出所缺的权限;
关于空指针问题:从一个Activity跳转到另外一个Activity相信大家都做过这个吧,这里出过空指针错误的应该也有不少吧,我也曾出过这个错误,呵呵;空指针问题一般出现在传值,取值的过程中,解决办法就是找准空值,然后解决空值,借用Log信息是解决该问题的一大法宝。
好了,现在让我们来进入正题。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.test.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>
</application>
</manifest>
当我们新建一个名为Test,包名为com.test的工程时,系统会自动为我们创建如上代码,里面包含了当前工程的一些最初的基本信息:包名,版本号,最低版本,目标版本,application信息:是否允许回退,整个应用的图标,标签,主题等,activity的信息:activity的名字,标签,过滤意图action,category等。
一般来说,在manifest文件中常用的包括有权限,以及对四大组件的描述,其中,对activity来说,有全屏的设置,系统软键盘的设置,横竖屏的设置,action的设置,而其他的基本就是描述性的,像权限,application中服务(service),广播(receiver)和provider,当然广播有点特殊,可以静态注册即在manifest中注册,也可以动态注册,在java代码中注册。
第一次写技术博文,有点低手,还望见谅,由于前面已经转载了一篇Manifest的详解,所以这里只是粗略的写了下自己的一些个见解,熟能生巧嘛,相信接下来的文章会有突破,呵呵。
欲知后事如何,且听下回分解。