<uses-sdk android:minSdkVersion="integer"
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />
<manifest>
通过整数型的API Level,采用一个或多个Android版本来让你指定应用的兼容性。这个由应用定义的API Level将同特定Android系统的API Level进行比较,它可以在不同的Android设备间变化。
通过名称我们可以看出,这个元素用来指定的是API Level,而不是SDK(software development kit)或Android的版本。这个API Level始终是整数。你不能从和它相关的Android版本号来派生出API Level(例如,它同主版本号或主次版本的总和是不一样的)。
你也可以阅读关于Versioning Your Applications的文档。
android:minSdkVersion
应用运行所需的最小API Level。如果系统的API Level比在这个属性中指定的值更低,那么Android系统将阻止用户安装这个应用。你应当始终声明这个属性。
注意:如果你没有声明这个属性,那么系统将分配一个默认值“1”,这意味着你的应用将兼容所有的Android版本。如果你的应用不兼容所有Android版本(例如,它使用的是API Level 3),而且你也没有声明minSdkVersion的话,那么当在API Level 3以下的系统中安装时,应用会在运行时期间尝试访问不可用的APIs时出现崩溃。正因如此,最好在minSdkVersion属性中声明相关的API Level。
android:targetSdkVersion
定义应用的目标API Level。如果没有设置,那么它的默认值同minSdkVersion给定的值相等。
这个属性通知系统你已经在这个target version上测试了你的应用,系统不应该再启用任何兼容性动作来维持你应用的向下兼容性。这个应用仍旧能够在更老的版本(minSdkVersion以上)运行。
随着Android新版本的不断演变,某些动作可能改变。然而,如果由你应用的targetSdkVersion定义的版本没有平台的版本高,那么系统可能启用兼容性动作来确保你的应用继续以你期望的方式工作。在应用运行时,你能通过指定targetSdkVersion匹配当前平台的API Level来禁用这个兼容性动作。例如,将这个值设为“11”或更高,那么当应用在Android 3.0或更高版本中运行时,就会允许系统应用新的默认主题(Holo)到你的应用,而且也能在运行在larger屏幕(因为对API Level 11的支持就隐含了支持larger屏幕)上时禁用screen compatibility mode。
有很多系统能启用的基于你为这个属性设置的值的兼容性动作。在Build.VERSION_CODES引用中,这些动作中的某些由对应的平台版本号来描述。
为了保证你的应用能在每个Android发布的版本上运行,你应当增加这个值以匹配最新的API Level,然后在相应的平台上测试你的应用。
出处:API Level 4
android:maxSdkVersion
设计的应用能运行的最大API Level。
在Android 1.5,1.6,2.0和2.0.1中,当安装应用时,以及当系统更新后重新验证这个应用时,系统会检查这个属性的值。有一种情况,如果应用的maxSdkVersion属性比使用的系统API Level低,那么系统就不会允许这个应用安装。在系统更新后重新验证时,这会有效地从设备中回收你的应用。
为了说明在系统更新后这个属性能如何影响你的应用,请看下面的例子:
在Google Play中发布的在manifest中声明maxSdkVersion="5"的应用。一个正在运行Android 1.6的用户设备下载和安装这个应用。几周后,用户收到更新系统到Android 2.0(API Level 5)的通知。在更新安装后,系统会检查这个应用的maxSdkVersion并且成功的重新验证它。这个应用的功能正常。然而,一段时间后,设备收到另一个系统更新,这次是更新到Android 2.0.1(API Level 6)。在这次更新后,由于系统自身的API Level (6)现在比应用(5)支持的最大 API Level更高,系统就不再能重新验证应用。系统会阻止用户看见这个应用,进而有效的从设备回收。
警告:不推荐声明这个属性。首先,当新版本发布时,不需要通过设置这个属性来阻止你的应用部署在Android平台的新版本上。在设计上,平台的新版本完全可以向下兼容。通过只使用标准APIs以及按照最佳开发实践这种手段,你的应用能正常的工作在新版本上。其次,注意下述情况,声明这个属性能导致你的应用在系统更新到更高的API Level后从用户的设备上回收。你应用很可能安装在大部分接收定期更新的设备上,因此你应当在设置这个属性之前考虑它所带来的影响。
出处:API Level 4
在安装或重新验证时,Android的未来版本将不再检测或执行这个maxSdkVersion属性。然而,当为用户提供可供下载的应用时,Google Play则会继续使用这个属性进行过滤。
API Level 1