“min sdk,target sdk和compile with”有什么区别?在android中

时间:2014-09-02 14:29:45

标签: android android-sdk-2.3

在android中使用“min SDK,目标SDK和编译”有什么区别?

当我尝试制作新的Android应用程序项目时出现的“最小SDK,目标SDK和编译”之间有什么区别!像这样...

Minimun SDK:API 14 目标SDK:API 17 编译:API 14

我的选择好吗?或者我应该选择哪些? 对不起,我试图放一张照片,但我不能......

5 个答案:

答案 0 :(得分:12)

简单地说,

Minimun SDK:API 14

指的是您的应用程序仅在api级别14即(ICS 4.0)或更高级别的移动电话上运行。你的应用程序将无法在早期版本的android上运行,例如gingerbread& Froyo的。

目标SDK:API 17

指的是你想要构建的android的版本,在你的情况下是Jellybean。建议尽可能保持最新状态(目前上下文为api 20 Kitkat)。

编译:API 14

指的是您正在测试的andriod版本。与api 14合作意味着您将在ICS上测试您的应用程序。

您还可以观看此视频:

https://www.youtube.com/watch?v=Sxo5zMcOCXM>

答案 1 :(得分:7)

<强>机器人:的minSdkVersion

一个整数,指定运行应用程序所需的最低API级别。如果系统的API级别低于此属性中指定的值,则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

<强>机器人: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

答案 2 :(得分:3)

尽量保持简单,我可以通过以下方式解释这三个术语:

最低要求SDK:显示您希望应用支持的最低Android版本的设备。例如,如果您在下拉列表中选择API 11:Honey Comb。这将显示您的应用程序不支持/不会在任何Android版本低于Honey Comb的Android设备上运行。

目标SDK:这应该始终保持尽可能高,因为它告诉您一直在定位或测试您的应用的最大Android版本。所以,如果你保持你的minReqSDK&gt;&gt; 11(蜂巢)和targetSDK&gt; 21(Lollipop),这表明你的应用程序将在从蜂窝到Lollipop的所有Android版本上运行,没有兼容性问题,因为你设置了目标SDK&gt;&gt; 21棒棒糖版。

编译:这与Android支持任何设备无关。您可以选择使用SDK管理器安装的任何Android版本来编译和运行您的应用程序以进行开发。

在您的情况下: min sdk版本:14 目标sdk:17 编译:14

你的设备将支持api等级14(Ice Cream Sandwich)到api等级17(Jelly Bean 4.2)的所有Android版本。并且您一直在使用api level 14(ICS)来编译和运行您的应用程序以进行开发。

希望这有帮助。

答案 3 :(得分:1)

简而言之,此处的目的是从minSDK声明不同的targetSDK:这意味着您使用的是比最低级别SDK更高级别的SDK,但 确保了向后兼容性 即可。换句话说,假设您想要使用最近才引入的功能,但这对您的应用程序并不重要。然后,您可以将targetSDK设置为引入此新功能的版本,将最小值设置为较低的值,以便每个人都可以使用您的应用。

举个例子,让我们假设你正在编写一个广泛使用手势检测的应用程序。但是,手势可以识别的每个命令也可以通过按钮或菜单完成。在这种情况下,手势是一个很酷的额外的&#39;但并不是必需的。因此,您可以将目标sdk设置为7(&#34; Eclair&#34;当引入GestureDetection库时),将最小SDK设置为3级(&#34; Cupcake&#34;),以便即使是真正旧手机的人也是如此可以使用你的应用程序您所要做的就是确保您的应用在尝试使用手势库之前检查了其运行的Android版本,以避免在它不存在时尝试使用它。 (不可否认,这是一个过时的例子,因为几乎没有人还有v1.5手机,但有一段时间保持与v1.5的兼容性非常重要。)

再举一个例子,如果你想使用Gingerbread或Honeycomb的功能,可以使用它。有些人很快就会得到更新,但许多其他人,特别是使用较旧的硬件,可能会一直困在Eclair,直到他们购买新设备。这可以让您使用一些很酷的新功能,但不排除部分可能的市场。

Android developer's blog中有一篇非常好的关于如何使用此功能的文章,特别是如何设计&#34;在使用之前检查该功能是否存在&#34;我上面提到的代码。

对于OP:我写这篇文章主要是为了将来碰巧遇到这个问题的任何人的利益,因为我意识到很久以前你的问题。 here is the Post

答案 4 :(得分:0)

<强>机器人:的minSdkVersion 一个整数,指定运行应用程序所需的最低API级别。如果系统的API级别低于此属性中指定的值,则Android系统将阻止用户安装应用程序。您应该始终声明此属性。 警告:如果您未声明此属性,系统会假定默认值为&#34; 1&#34;,表示您的应用程序与所有Android版本兼容。如果您的应用程序与所有版本不兼容(例如,它使用API​​级别3中引入的API)并且您尚未声明正确的minSdkVersion,那么当安装在API级别小于3的系统上时,应用程序将在崩溃期间崩溃尝试访问不可用的API时的运行时。因此,请务必在minSdkVersion属性中声明相应的API级别。

<强>机器人:targetSdkVersion 一个整数,指定应用程序所针对的API级别。如果未设置,则默认值等于给予minSdkVersion的值。 此属性会通知系统您已针对目标版本进行了测试,系统不应启用任何兼容性行为来维持应用程序与目标版本的向前兼容性。该应用程序仍然可以在旧版本上运行(直到minSdkVersion)。

随着Android随着每个新版本的发展,一些行为甚至外观都可能会发生变化。但是,如果平台的API级别高于应用程序的targetSdkVersion声明的版本,则系统可能会启用兼容性行为,以确保您的应用程序继续以您期望的方式工作。您可以通过指定targetSdkVersion以匹配其运行的平台的API级别来禁用此类兼容性行为。例如,将此值设置为&#34; 11&#34;或更高版本允许系统在Android 3.0或更高版本上运行时将新的默认主题(Holo)应用于您的应用程序,并在大屏幕上运行时禁用屏幕兼容模式(因为支持API级别11隐式支持更大的屏幕)。

系统可根据您为此属性设置的值启用许多兼容性行为。其中一些行为由Build.VERSION_CODES引用中的相应平台版本描述。

要在每个Android版本中维护您的应用程序,您应该增加此属性的值以匹配最新的API级别,然后在相应的平台版本上彻底测试您的应用程序。

介绍于:API Level 4

<强>机器人:maxSdkVersion 一个整数,指定应用程序运行的最大API级别。 在Android 1.5,1.6,2.0和2.0.1中,系统在安装应用程序时以及在系统更新后重新验证应用程序时检查此属性的值。在任何一种情况下,如果应用程序的maxSdkVersion属性低于系统本身使用的API级别,则系统将不允许安装应用程序。在系统更新后重新验证的情况下,这会有效地从设备中删除您的应用程序。

为了说明此属性在系统更新后如何影响您的应用程序,请考虑以下示例:

申报声明maxSdkVersion =&#34; 5&#34;在其清单中发布在Google Play上。设备运行Android 1.6(API级别4)的用户下载并安装应用程序。几周后,用户会收到Android 2.0(API级别5)的无线系统更新。安装更新后,系统会检查应用程序的maxSdkVersion并成功重新验证它。该应用程序正常运行。但是,一段时间后,设备会收到另一个系统更新,这次是针对Android 2.0.1(API Level 6)。在更新之后,系统不再能够重新验证应用程序,因为系统自身的API级别(6)现在高于应用程序(5)支持的最大值。系统会阻止应用程序对用户可见,实际上将其从设备中删除。

警告:不建议声明此属性。首先,没有必要将属性设置为阻止将应用程序部署到Android平台的新版本上的方法。通过设计,该平台的新版本完全向后兼容。您的应用程序应该在新版本上正常运行,前提是它只使用标准API并遵循开发最佳实践。其次,请注意,在某些情况下,声明属性可能会导致您的应用程序被用户删除。系统更新到更高API级别后的设备。大多数可能安装了您的应用程序的设备将通过无线方式定期进行系统更新,因此在设置此属性之前,您应该考虑它们对您的应用程序的影响。

介绍于:API Level 4

Android的未来版本(Android 2.0.1之外)将不再在安装或重新验证期间检查或强制执行maxSdkVersion属性。但是,Google Play会在向用户展示可供下载的应用程序时继续使用该属性作为过滤器。

有关详情,请点击此处:use sdk