当我尝试创建一个新的Android应用程序项目时,“minimum SDK”,“target SDK”和“compile with”有什么区别,就像这样...
最小SDK:API 14 目标SDK:API 17 编译版本:API 14
我的选择是否好?还是应该选择哪个? 抱歉,我试图放一张照片,但我不能...
简而言之,
最低SDK:API 14
指的是您的应用程序只能在API级别为14(即ICS 4.0)或更高版本的移动电话上运行。您的应用程序将无法在早期版本的Android上运行,例如姜饼和Froyo。
目标SDK:API 17
指的是您要构建的Android版本,这在您的情况下是Jellybean。建议尽可能保持最新版本(目前是api 20 Kitkat)。
编译版本:API 14
指的是您正在测试的Andriod版本。使用api 14进行编译意味着您将在ICS上测试应用程序。
你也可以观看这个视频:
android:minSdkVersion
一个整数,用于指定应用程序运行所需的最低API级别。如果系统的API级别低于此属性中指定的值,则Android系统将阻止用户安装该应用程序。你应该总是声明此属性。
android:targetSdkVersion
指定应用程序目标API级别的整数。如果未设置,则默认值等于minSdkVersion。该属性通知系统您已经针对目标版本进行了测试,系统不应启用任何兼容行为以保持您的应用程序与目标版本的向前兼容性。该应用程序仍然能够在旧版本上运行(最低可支持minSdkVersion)。
随着每个新版本的推出,Android会发生变化,一些行为甚至外观也可能会改变。但是,如果平台的API级别高于您的应用程序的targetSdkVersion声明的版本,则系统可能会启用兼容性行为,以确保您的应用程序继续按您期望的方式工作。您可以通过指定targetSdkVersion来禁用此类兼容性行为,以匹配其正在运行的平台的API级别。例如,将此值设置为"11"或更高版本,可以使系统在运行Android 3.0或更高版本时将新的默认主题(Holo)应用于您的应用程序,并在更大的屏幕上运行时禁用屏幕兼容性模式(因为对API级别11的支持隐含支持更大的屏幕)。
系统可能基于此属性的值启用许多兼容性行为。其中一些行为在Build.VERSION_CODES参考中由相应的平台版本描述。
为了跟随每个Android版本发布,您应该增加此属性的值以匹配最新的API级别,然后在相应的平台版本上彻底测试您的应用程序。
引入版本:API Level 4
android:maxSdkVersion
指定应用程序设计运行的最大API级别的整数。在Android 1.5、1.6、2.0和2.0.1中,在安装应用程序和系统更新后重新验证应用程序时,系统检查此属性的值。在任何一种情况下,如果应用程序的maxSdkVersion属性低于系统本身使用的API级别,则系统将不允许安装该应用程序。在系统更新后的重新验证中,这有效地从设备中删除了您的应用程序。
请通过以下链接获取更多详细信息:
http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
有一篇非常好的文章来自Android开发者博客,讲述了如何使用这个功能,特别是如何设计上面提到的“在使用之前检查功能是否存在”的代码。
对于楼主:我主要是为了将来偶然遇到这个问题的人而写的,因为我意识到你的问题是很久以前提出的。 这里是帖子
android:minSdkVersion 一个整数,指定应用程序运行所需的最低API级别。如果系统的API级别低于此属性中指定的值,则Android系统将阻止用户安装该应用程序。您应该始终声明此属性。 注意:如果您不声明此属性,则系统会假定默认值为“1”,这表示您的应用程序与所有版本的Android兼容。如果您的应用程序不兼容所有版本(例如,它使用在API Level 3中引入的API),并且您没有声明适当的minSdkVersion,则在安装到API级别低于3的系统上时,应用程序将在运行时崩溃,因为尝试访问不可用的API。因此,请务必在minSdkVersion属性中声明适当的API级别。
android:targetSdkVersion 一个整数,指定应用程序针对的API级别。如果未设置,则默认值等于minSdkVersion。 此属性通知系统,您已经测试了目标版本,并且系统不应启用任何兼容性行为以保持应用程序与目标版本的向前兼容性。该应用程序仍能在旧版本上运行(最低至minSdkVersion)。
随着每个新版本的推出,Android会不断演进,一些行为甚至外观可能会发生变化。但是,如果平台的API级别高于您的应用程序的targetSdkVersion声明的版本,则系统可能会启用兼容性行为,以确保您的应用程序继续按照您的期望工作。您可以通过将targetSdkVersion指定为正在运行的平台的API级别来禁用此类兼容性行为。例如,将此值设置为“11”或更高版本时,系统在Android 3.0或更高版本上运行时会将新的默认主题(Holo)应用于您的应用程序,并且在较大屏幕上运行时会禁用屏幕兼容性模式(因为对API级别11的支持隐含支持较大屏幕)。android:maxSdkVersion 一个整数,指定应用程序设计运行的最大API级别。 在Android 1.5、1.6、2.0和2.0.1中,系统在安装应用程序和系统更新后重新验证应用程序时检查此属性的值。在任何一种情况下,如果应用程序的maxSdkVersion属性低于系统本身使用的API级别,则系统将不允许安装该应用程序。在系统更新后重新验证的情况下,这实际上会从设备中删除您的应用程序。
为了说明此属性如何影响系统更新后的应用程序,请考虑以下示例:
在Google Play上发布了一个在其清单中声明maxSdkVersion="5"的应用程序。运行Android 1.6(API级别4)的设备的用户下载并安装该应用程序。几周后,用户收到了针对Android 2.0(API级别5)的OTA系统更新。安装更新后,系统检查应用程序的maxSdkVersion并成功重新验证它。应用程序正常运行。然而,一段时间后,设备接收到另一个系统更新,这次是针对Android 2.0.1(API级别6)。更新后,系统无法再次验证应用程序,因为系统自己的API级别(6)现在比应用程序支持的最高级别(5)更高。系统防止应用程序对用户可见,实际上将其从设备中删除。警告:不建议声明此属性。首先,没有必要设置该属性来阻止您的应用程序部署到新版本的Android平台上,因为按设计,新版本的平台完全向后兼容。只要使用标准API并遵循开发最佳实践,您的应用程序应该在新版本上正常工作。其次,请注意,在某些情况下,声明该属性可能会导致您的应用程序在系统更新到更高的API级别后从用户设备中删除。大多数安装了您的应用程序的设备将通过空中接收定期系统更新,因此在设置此属性之前,您应该考虑它们对您的应用程序的影响。
引入版本:API Level 4
Android的未来版本(超过Android 2.0.1)将不再在安装或重新验证期间检查或强制执行maxSdkVersion属性。然而,Google Play在向用户提供可下载的应用程序时仍将使用该属性作为筛选器。
了解更多信息,请单击此处:使用sdk