语法(SYNTAX):
1 <uses-sdk android:minSdkVersion="integer" 2 android:targetSdkVersion="integer" 3 android:maxSdkVersion="integer" />
被包含于(CONTAINED IN):
<manifest>
说明(DESCRIPTION):
这个元素用API 的级别(一个整数)来说明应用程序会跟哪些Android平台版本兼容。由应用程序给出的API级别会跟给定不同的设备中的Android系统的API级别比较。
尽管这个元素被用于指定API的级别,但它并不是SDK(软件开发工具包)或Android平台的版本号。API级别始终是用一个整数表示。不能够从根API级别关联的Android版本号中获取API级别信息(例如,它不是主版本号,也不是主版本号和次版本号的和)。
属性(ATTRIBUTES):
android:minSdkVersion
一个整数,它指定了应用程序运行所需要的最小的API级别。如果Android系统的API级别比应用程序清单中的这个属性值小,那么系统就阻止安装该应用程序,应该始终声明这个属性。
警告:如果没有声明这个属性,Android系统就会假设一个默认值1,它表明该应用程序会跟所有的Android版本兼容。如果应用不是跟所有的Android版本兼容(例如,应用要使用在API Level 3中引入的API),并且也没有声明正确的minSdkVersion属性,那么当应用安装到API Level 3小的系统上时,应用程序会在视图访问无效的API时崩溃。由于这个原因,必须要在minSdkVersion属性中声明适当的API Level。
android:targetSdkVersiion
一个整数,它指定了应用程序要运行的目标的API级别。如果没有设置,它的默认值等于给定的minSdkVersion属性值。作用:
- 告诉系统,针对目标版本已经做了检测。
- 针对目标版本,系统不应该让兼容性行能够维持app的前向兼容性。
- app依然能够运行在较低版本的平台上(直到minSdkVersion属性值所指定的版本)。
在Android演进的每个新版本中,系统的一些行为甚至外观都可能会改变。但是,如果平台的API级别比应用程序声明的targetSdkVersion的值大,那么系统就可以让兼容性行为确保app能够继续按照期望的方式去工作。因此,可以通过设置targetSdkVersion匹配app运行时的平台API级别,禁止兼容性行为。例如,把这个属性值设置为11或更大,就会允许系统把新的默认主题应用在Android3.0或更高版本平台之上的app,并且运行在大屏幕的设备上时,也禁止screen compatibility mode (因为针对API Level 11的支持,暗示着对较大屏幕的支持)。
有很多兼容行为,系统是基于这个属性所设置的值启用的。这些行为中的一些被描述在相应平台版本(参考Build.VERSION_CODES)。
随着每个Android平台版本的发布,都应该增长app这个属性值,让它跟最新的API级别相匹配,最后再对应的平台版本上进行完整的测试。
这个属性在API Leve 4中被引入。
android:maxSdkVersion
一个整数,表明该应用要运行的最大的API Level。
在Android1.5、1.6、2.0和2.0.1中,在安装应用程序时系统会检查这个值,并且在系统升级后也会重新验证该应用程序的这个值。另外,如果应用程序的maxSdkVersion属性值比系统自身所使用的API Level低,那么系统就不会允许应用程序被安装,在因系统升级而重新验证(re-validating)的情况中,会把app从设备上删除。
以下是系统升级更新后,这个属性是如何影响应用程序的例子:
一个发布到Google Play上的应用程序,在它的清单中声明了maxSdkVersion=”5”。一个运行Android1.6(API Level 4)的用户设备下载并安装了app。几周之后,用户把系统升级到Android2.0(API Level 5),升级后,系统会检查app的maxSdkVersion属性,并成功的重新的验证了它,该应用程序能够正常运行。但是,不久之后,该设备的系统又升级到Android2.0.1(API Level 6),升级之后的系统不再重新验证该应用程序了,因为系统自己的API Level(6)比该app所支持的最大API Level还有大,因此系统会阻止把该应用程序显示给用户,就像把该应用程序从设备删除的效果一样。
警告:不推荐声明这个属性。首先,没有必要设置这个属性是因为会阻碍app在新发布的Android平台版本上部署。新的平台版本是被设计为完全向后兼容的。只要使用标准的API和遵循Best Practices,app能在新Anroid版本正常运行。其次,要注意的是,声明这个属性会导致一个结果——在系统更新到较高的API Level之后,app可能会从用户设备中删除。
在Android的未来版本中(Android2.0.1除外),在安装或重验证期间,将不再检查或强制要求maxSdkVersion属性。但Google Play在把应用程序展示给用户下载的时候,会继续使用这个属性作为过滤条件。
这个属性在API Level 4中被引入。