找了官方的关于sdKVersion的描述,加上自己的理解记录一下,加深一下理解。尤其是targetSdkVersion。
- minSdkversion:
用来指定应用程序能运行的最小API。如果系统的API小于此属性所规定的API,那么应用程序将无法被安装。
而且,这个属性必须被定义。
需要注意的是,如果没有定义这个属性,系统将会为它赋一个默认值1,这就意味着此应用程序兼容所有的Android版本。因此,如果一个应用程序不是兼容所有的版本(假设使用了API8中的API),同时也没有正确定义minSdkVersion这个属性,当此应用被安装在一个API小于8的系统上之后,在运行时会因为找不到可用的API而崩溃。 - maxSdkVersion:
用来指定应用程序被设计能运行的最大API。
在Android1.5,1.6,2.0和2.0.1上,当应用程序被安装和系统更新之后,系统会检查此属性的值。如果这个值低于系统的API,那么将不能安装。
举例如下:
如果一个应用程序在发布时maxSdkVersion设置为5,一个人在他API为4的设备上安装了此应用。不久之后,系统更新,此人的设备升级到API5,更新完成之后,系统检查此应用的maxSdkVersion,并完成验证,此应用的功能一切正常。在之后,系统再次更新,升级到了API6,然后,系统无法通过对此应用的验证,便将其从设备上删除。
事实上,并不推荐使用maxSdkVersion这个属性。首先,当Android系统升级的时候,没有必要设置这个属性来阻止应用程序安装到设备上。通过系统的设计,新版本的Android系统是完全向后兼容的。就是,只要一个应用程序使用了标准的API并且遵循开发原则,它就能正确地在新版本上运行。其次,就像上面的例子一样,如果设置了这个属性,那么应用程序可能就会在某次系统更新之后被删除。
在Android2.0.1(API6)之后,系统不再检查此属性. - targetSdkVersion:
用来指定应用程序的目标API.没有设置的话,其值等于给定的minSdkVersion的值。
随着Android系统的不断升级,一些行为(操作)和外观都可能发生改变。当然,如果系统的API高于应用程序的targetSdkVersion系统就会做一些兼容性方面的操作来使应用程序按照期望的方式运行。可以通过指定targetSdkVersion来匹配(或者使targetSdkVersion更高)程序所运行在的系统,从而不进行那些兼容性操作(因为在设置targetSdkVersion的时候已经进行了兼容性测试)。
也就是说,targetSdkVersion是用来保证在不同的系统上运行时应用程序所显示出的效果的一致性的。
为了使应用程序和每一个Android系统相适应,targetSdkversion应设置为当前最大的API level.