我需要来自 Android API 级别 11 的功能,但如果我将 targetSdkVersion 设置为 10,那么我会得到我想要的旧式菜单(使用菜单按钮)。这些值是否“合法”设置,或者 targetSdkVersion 是否必须高于或等于 minSdkVersion?
(注:它似乎工作!)
我需要来自 Android API 级别 11 的功能,但如果我将 targetSdkVersion 设置为 10,那么我会得到我想要的旧式菜单(使用菜单按钮)。这些值是否“合法”设置,或者 targetSdkVersion 是否必须高于或等于 minSdkVersion?
(注:它似乎工作!)
正如文件所说android:targetSdkVersion
,
一个整数,指定应用程序所针对的 API 级别。如果未设置,则默认值等于提供给 minSdkVersion 的值。此属性通知系统您已针对目标版本进行了测试,并且系统不应启用任何兼容性行为来保持您的应用程序与目标版本的前向兼容性。该应用程序仍然能够在旧版本上运行(低至 minSdkVersion)。
无论如何,targetSdkVersion
应该总是大于或等于minSdkVersion
,因为你的应用程序绝对不能在minSdkVersion
. 如果您投入targetSdkVersion
的少于minSdkVersion
意味着您告诉 android 系统您已经在 上测试了此应用程序targetSdkVersion
,但这是不可能的(因为您的应用程序只能在低至 的设备上运行minSdkVersion
)。
因此,矛盾targetSdkVersion
应该总是大于等于minSdkVersion
。
始终使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