我已经看过用Gradle构建的documentation,但是我仍然不确定compileSdkVersion
和targetSdkVersion
之间的区别是什么。
它只说:
那么,“编译目标”是什么?
我看到两种可能的解释方法:
compileSdkVersion
是用于构建应用程序的编译器版本,而targetSdkVersion
是"API level that the application targets"。 (如果是这种情况,我假设compileSdkVersion
必须大于或等于targetSdkVersion
吗?我看到有人问过this question,但是一个答案只是引用了doc,这对我来说还不清楚。
最佳答案
编译器compileSdkVersion
是针对该应用程序编译的API版本。这意味着您可以使用该版本API(显然包括所有先前版本)中包含的Android API功能。如果尝试使用API 16功能,但将compileSdkVersion
设置为15,则会出现编译错误。如果将compileSdkVersion
设置为16,只要您应用的执行路径不尝试调用API 16特有的任何API,您仍然可以在API 15设备上运行该应用。
targetSdkVersiontargetSdkVersion
与您的应用程序的编译方式或可以使用的API没有任何关系。 targetSdkVersion
应该表明您已经在指定的版本上(大概包括以下)测试了您的应用程序。这更像是认证或注销,您是在向Android操作系统提供提示,以提示它应如何在操作系统功能方面处理您的应用。
例如,如the documentation所示:
Android OS的运行时的可能会基于此值来更改应用程序的样式化或在OS的上下文中执行的方式。还有其他一些受此值影响的已知示例,并且该列表可能只会随着时间的推移而增加。
出于所有实际目的,大多数应用程序都希望将targetSdkVersion
设置为API的最新发行版本。这将确保您的应用在最新的Android设备上看起来尽可能好。如果未指定targetSdkVersion
,则默认为minSdkVersion
。