我可以将targetSdkVersion设置为小于minSdkVersion吗?

3
我需要使用Android API 11的功能,但是如果我将targetSdkVersion设置为10,则可以获得我想要的旧式菜单(带有菜单按钮)。这些值是否可以设置为“合法”,还是targetSdkVersion必须高于或等于minSdkVersion?
(注意:看起来它可以工作!)

1
minSdkVersion 设置最低兼容 API 级别,而 targetSdkVersion 设置“编译使用”的 API 级别。我的建议是将 minSdkVersion 设置为与 targetSdkVersion 相同或更低的版本。如果需要,添加支持库。 - Phantômaxx
2个回答

4
文档所述,android:targetSdkVersion是一个整数,用于指定应用程序的目标API级别。如果未设置,则默认值等于minSdkVersion。该属性通知系统,您已针对目标版本进行了测试,因此系统不应启用任何兼容性行为,以保持您的应用程序与目标版本的向前兼容性。应用程序仍然能够在较旧的版本上运行(最低至minSdkVersion)。

无论如何,targetSdkVersion始终应大于或等于minSdkVersion,因为您的应用程序不能在minSdkVersion以下运行。如果将targetSdkVersion设为小于minSdkVersion,则表示您正在告诉Android系统,您已在targetSdkVersion上测试此应用程序,但这是不可能的(因为您的应用程序只能在最低为minSdkVersion的设备上运行)。

因此,由矛盾可知,targetSdkVersion应始终大于等于minSdkVersion


1
但是我已经设置了targetSdkVersion=10和minSdkVersion=11,它可以工作。我相信我不能在10上安装它,但我可以在sdk>=11上以10的身份运行它。 - JohnyTex
1
如果我想在目标SDK大于等于某个值时禁用安全限制,该怎么办?我可以将其设置为1,并将最小值设为必须的值。是否会出现任何错误?或者什么都不会抱怨?(注:我知道Play Store不允许目标SDK低于某些值,但这将是Play Store之外的发布)。 - Edw590

0

始终使targetSdkVersion大于等于minSdkVersion

您可以绕过android:targetSdkVersion版本并使用特定API级别的功能。解决问题的最佳方法是在运行时以编程方式确定设备版本,并选择API特定实现,而不是指定硬编码值。

请参见此处,

  // Make sure we're running on Honeycomb or higher
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        // set the new menu styles
    } else {
      // do nothing and it will show the default theme
}

请在此处查阅官方文档。

http://developer.android.com/training/basics/supporting-devices/platforms.html#version-codes


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接