【问题标题】:Can I set targetSdkVersion to less than minSdkVersion?我可以将 targetSdkVersion 设置为小于 minSdkVersion 吗?
【发布时间】:2015-11-03 07:50:03
【问题描述】:

我需要来自 Android API 级别 11 的功能,但如果我将 targetSdkVersion 设置为 10,那么我会得到我想要的旧式菜单(使用菜单按钮)。这些值是否“合法”设置,或者 targetSdkVersion 是否必须高于或等于 minSdkVersion?

(注意:它似乎有效!)

【问题讨论】:

  • minSdkVersion 设置最低兼容性 API 级别,而 targetSdkVersion 设置“编译方式”API 级别。 Mi 建议使用与 targetSdkVersion 相同或更低的版本作为 minimumSdkVersion。如果需要,添加支持库。

标签: android target-sdk android-min-sdk


【解决方案1】:

正如document 所说的android:targetSdkVersion

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

无论如何,targetSdkVersion 应该始终大于或等于minSdkVersion,因为您的应用程序绝对不能在minSdkVersion 以下运行。如果你把targetSdkVersionminSdkVersion 少,这意味着你告诉安卓系统你已经在targetSdkVersion 上测试了这个应用程序,但这是不可能的(因为你的应用程序只能在低至minSdkVersion)。

因此矛盾的是targetSdkVersion 应该总是大于等于minSdkVersion

【讨论】:

  • 但是我设置了 targetSdkVersion=10 和 minSdkVersion=11 并且它可以工作。我相信我不能在10上安装它,但我可以在sdk> = 11上将它作为10运行。
  • 如果我想禁用当目标 SDK >= 到某个值时施加的安全限制...?我可以将其设置为 1 并设置最小值。某处会出现任何错误吗?还是什么都不会抱怨? (注意:我知道 Play 商店不允许目标 SDK 低于某些值,但它会在 Play 商店之外发布)
【解决方案2】:

始终使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

【讨论】:

    猜你喜欢
    • 2016-03-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2020-01-14
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多