【问题标题】:Build version Vs MinSdk Vs targetSdk构建版本与最小 Sdk 与目标 Sdk
【发布时间】:2026-01-19 12:25:01
【问题描述】:

每次我对此感到困惑并进行搜索时,我“认为”我理解它,但我似乎也没有。

有人可以向我解释您构建的 API 与您在清单中指定的 Min SDK 和您指定的目标 SDK 之间的区别吗?

例如: 我有一个应用程序,其 minSDK 为 8,targetSDK 为 15,我针对 SDK 12 构建。有什么区别?它在什么设备上运行?我从这些差异中得到了什么! 有人请解释! 谢谢你

【问题讨论】:

  • 感谢投反对票,不,这不是重复的,而且该线程已经超过 2 年了。很可能平板电脑已经改变了
  • 我没有投反对票,但感谢您的假设。此外,平板电脑可能不会改变任何事情。这两个的意思和以前完全一样。

标签: android


【解决方案1】:

有什么区别?

差是两个数相减的结果。但这在这里并不重要。 :-)

它在什么设备上运行?

这与其他任何事情一样取决于您的代码。但是,它不会在 API 级别 7 及更低级别上运行,因为它们低于您的 minSdkVersion。 Android 设备(和市场)不允许您的应用在 API 级别 7 及更低的设备上运行。

我从这些差异中获得了什么!

通过将构建目标设置为 12,您是在对编译器和构建工具说:“我想使用比 API 级别 8 更新的 API,一直到 API 级别 12,但我保证会在这样的避免在旧设备上使用那些新 API 的方法”。当您尝试使用没有适当保护的较新 API(例如,检查 android.os.Build.SDK_INT)时,构建工具(尤其是 Lint)会对您大喊大叫。

通过将 android:targetSdkVersion 设置为 15,您是在对编译器和构建工具说:“当我编写此代码时,我正在考虑 API 级别 15”。比您的目标更新的设备可能会选择以不同的方式做事,以尝试更好地模拟 API 级别 15 的生活。

后者最好的例子是AsyncTask。传统上,任务可以并行运行。但是,如果您将 android:targetSdkVersion 设置为 13 或更高,并且您在 API 级别 13 或更高的设备上运行,然后任务默认会串行执行。如果您在 API 级别 13 或更高级别的设备上运行,但您的 android:targetSdkVersion 为 12 或更低级别,则设备将回退到旧行为以保持兼容性。

【讨论】:

  • 谢谢你。一如既往地喜欢你的解释。好的,如果我想让我的应用程序在 api 8 或更高版本上运行而不使用构建工具,那么我该怎么办?针对 8 构建并将 minsdk 设置为 8,但将 targetsdk 设置为最高数字?
  • @Snake:“好的,如果我想让我的应用程序在 api 8 或更高版本上运行而不使用构建工具,那我该怎么办?” -- 我不知道“不使用构建工具”是什么意思。
  • 我的意思是不使用 android.os.Build.SDK_INT 并尝试弄清楚什么可行,什么不可行
  • @Snake:当您尝试使用更新的 API 时,构建工具,尤其是 Lint 会大喊大叫。您别无选择,只能使用构建工具,除非您想停止编写 Android 应用程序。将您的 android:minSdkVersion 设置为 8。将您的构建目标设置为 8 或更高。
【解决方案2】:

您用于构建自己的应用程序的 SDK 将定义所有可用的类。没有理由不使用可用的最高值(目前为 17)

如 JoxTraex 所述,minSDK 是:“您的应用运行所需的最少 android 操作系统 API 集”

targetSDK 是您测试过应用的最高版本。这将启用一些功能(全息、再见菜单按钮)。在新的 Android 版本中默认引入了这些更改,但您应该在清单中写明这些新功能已经过测试。

【讨论】:

    【解决方案3】:

    Min SDK 是您的应用运行所需的最低 android 操作系统 API 集

    Target SDK 是您的主要平台目标版本,通常总是高于 Min。

    它不决定设备,因为设备的平台版本可以改变。

    【讨论】: