在Android中使用targetSDKVersion有什么影响

时间:2011-12-16 20:37:06

标签: android

这是Android文档中关于AndroiManifes.xml文件中uses-sdk元素的targetSDKVersion属性的摘要。

  

设置此属性后,应用程序会说它能够运行   旧版本(低至minSdkVersion),但已经过明确测试   使用此处指定的版本。指定此目标   版本允许平台禁用兼容性设置   目标版本不需要(否则可能会打开)   为了保持向前兼容性)或启用更新的功能   旧版应用程序无法使用。

任何人都可以在此上下文中解释前向兼容性的含义,或者提出可以禁用的“兼容性设置”的示例吗?

4 个答案:

答案 0 :(得分:6)

这主要用于说明您支持并适应大型OS跳转,例如,您可以设计一个可以运行1.6到3.2的应用程序,而不是说目标版本是11+,它会起作用,但是在API版本11及更高版本中,您将在兼容模式下运行,平板电脑将询问您是否要拉伸或缩放应用以适应屏幕。

如果您将目标版本设置为11,系统将了解您实际上已经做了一些事情来适应该API级别,因此您将不会看到缩放或拉伸的选项,而是只是像使用它时那样使用它它仅为3.0 +

设计

答案 1 :(得分:2)

较新的Android版本总是添加了可能无法在“兼容模式”中使用的功能。即在3.0 Android设备上运行针对2.2的设备将运行“向后兼容”功能,但如果目标是3.0和minSdk版本2.2,将允许在2.2+设备上安装(向后兼容性打开),但也运行在3.0没有打开向后兼容性的版本(这就是前向兼容性的含义)。

答案 2 :(得分:2)

<强> targetSDKVersion

您正在编译的版本。如果您尝试使用任何较新的api,您将只会遇到编译器错误,因为编译器不会知道这些api是什么意思。

minSdkVersion

您支持的最低sdk版本。下面的任何设备都无法从市场上看到或无法安装您的应用。

请注意,如果您使用目标sdk中的api,这些api来自较低版本,编译,但将不会工作并可能导致您的应用崩溃。因此,您需要在构建代码时考虑到这一点。

例如进行像

这样的检查
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    ... Use ice cream sandwich apis ...

保证API 14之前的用户不会崩溃。

修改

有关从版本到版本的API更改列表,请转到 http://developer.android.com/sdk/index.html

例如,刚刚公布的4.0.3版本中的新内容概述:http://developer.android.com/sdk/android-4.0.3.html

该版本的真实细节: http://developer.android.com/sdk/api_diff/15/changes.html

答案 3 :(得分:0)

您可以从minSdkVersion定义不同的targetSDKVersion,这实际上意味着您可以使用targetSDKVersion中SDK的功能,同时具有向后兼容性。

这可能会考虑您的应用程序的任何代码部分(例如将C2DM集成到您的应用程序中,甚至将您的应用程序提供给具有Android 2.1但没有C2DM支持的设备)或清单中(即安装选项为auto,这将是被省略到android 2.1)。

希望这有帮助!