我已经查看了使用 Gradle 构建的文档,但我仍然不确定compileSdkVersion和之间的区别targetSdkVersion是什么。
compileSdkVersion
targetSdkVersion
它说的是:
该compileSdkVersion属性指定编译目标。
那么,什么是“编译目标”?
我看到了两种可能的解释方式:
这compileSdkVersion是应用程序编译所针对的 API 版本。这意味着您可以使用该 API 版本中包含的 Android API 功能(显然,也可以使用所有以前的版本)。如果您尝试使用 API 16 功能但设置compileSdkVersion为 15,您将收到编译错误。如果您设置compileSdkVersion为 16,您仍然可以在 API 15 设备上运行该应用程序,只要您的应用程序的执行路径不尝试调用任何特定于 API 16 的 API。
这targetSdkVersion与您的应用程序的编译方式或您可以使用的 API 无关。targetSdkVersion应该表明您已经在(可能达到并包括)您指定的版本上测试了您的应用程序。这更像是您向 Android 操作系统提供的认证或签字,作为它应该如何处理您的应用程序在操作系统功能方面的提示。
例如,正如文档所述:
例如,将此值设置为“11”或更高允许系统在运行 Android 3.0 或更高版本时将新的默认主题 (Holo) 应用于您的应用程序…
Android 操作系统 在运行时 可能会根据此值更改您的应用程序在操作系统上下文中的样式化或以其他方式执行的方式。还有一些其他已知示例受此值影响,并且该列表可能只会随着时间的推移而增加。
出于所有实际目的,大多数应用程序都希望设置targetSdkVersion为 API 的最新发布版本。这将确保您的应用在最新的 Android 设备上看起来尽可能好。如果不指定targetSdkVersion,则默认为minSdkVersion。
minSdkVersion