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