这是Android文档中关于AndroiManifes.xml文件中uses-sdk元素的targetSDKVersion属性的摘要。
设置此属性后,应用程序会说它能够运行 旧版本(低至minSdkVersion),但已经过明确测试 使用此处指定的版本。指定此目标 版本允许平台禁用兼容性设置 目标版本不需要(否则可能会打开) 为了保持向前兼容性)或启用更新的功能 旧版应用程序无法使用。
任何人都可以在此上下文中解释前向兼容性的含义,或者提出可以禁用的“兼容性设置”的示例吗?
答案 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)。
希望这有帮助!