compileSdkVersion 和 targetSdkVersion 有什么区别?

新手上路,请多包涵

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

它说的是:

compileSdkVersion 属性指定编译目标。

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

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

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

我看到以前有人问过 这个问题,但是一个答案只是引用了文档,这对我来说是不清楚的。

原文由 coder123 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 893
2 个回答

compileSdkVersion

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

目标SDK版本

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

例如,正如 文档 所述:

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

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

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

原文由 Jeffrey Mixon 发布,翻译遵循 CC BY-SA 3.0 许可协议

targetSdkVersion 和 compileSdkVersion

targetSdkVersion 它是一个表示切换操作系统某些特定更改的版本。这意味着您知道自己在做什么,并且经过测试

compileSdkVersion - 它是 SDK 平台版本,说明使用哪个 Android SDK 进行编译。这就是为什么在调试过程中你会看到这个版本的系统库的版本

[在这里阅读更多]

原文由 yoAlex5 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题