小编典典

compileSdkVersion 和 targetSdkVersion 有什么区别?

all

我已经查看了使用 Gradle 构建的文档,但我仍然不确定compileSdkVersion和之间的区别targetSdkVersion是什么。

它说的是:

compileSdkVersion属性指定编译目标。

那么,什么是“编译目标”?

我看到了两种可能的解释方式:

  1. compileSdkVersion是用于构建应用程序的编译器版本,targetSdkVersion而是“应用程序目标的 API 级别”。(如果是这种情况,我假设compileSdkVersion必须大于或等于targetSdkVersion?
  2. 他们的意思是一样的。”编译目标” == “应用程序目标的 API 级别”
  3. 还有什么?

阅读 202

收藏
2022-03-04

共1个答案

小编典典

compileSdkVersion

compileSdkVersion是应用程序编译所针对的 API 版本。这意味着您可以使用该 API 版本中包含的 Android API
功能(显然,也可以使用所有以前的版本)。如果您尝试使用 API 16 功能但设置compileSdkVersion
15,您将收到编译错误。如果您设置compileSdkVersion为 16,您仍然可以在 API 15
设备上运行该应用程序,只要您的应用程序的执行路径不尝试调用任何特定于 API 16 的 API。

目标SDK版本

targetSdkVersion与您的应用程序的编译方式或您可以使用的 API
无关。targetSdkVersion应该表明您已经在(可能达到并包括)您指定的版本上测试了您的应用程序。这更像是您向 Android
操作系统提供的认证或签字,作为它应该如何处理您的应用程序在操作系统功能方面的提示。

例如,正如文档所述:

例如,将此值设置为“11”或更高允许系统在运行 Android 3.0 或更高版本时将新的默认主题 (Holo) 应用于您的应用程序…

Android 操作系统 在运行时
可能会根据此值更改您的应用程序在操作系统上下文中的样式化或以其他方式执行的方式。还有一些其他已知示例受此值影响,并且该列表可能只会随着时间的推移而增加。

出于所有实际目的,大多数应用程序都希望设置targetSdkVersion为 API 的最新发布版本。这将确保您的应用在最新的 Android
设备上看起来尽可能好。如果不指定targetSdkVersion,则默认为minSdkVersion

2022-03-04