我已经看过用Gradle构建的documentation,但是我仍然不确定compileSdkVersiontargetSdkVersion之间的区别是什么。

它只说:



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

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

  • compileSdkVersion是用于构建应用程序的编译器版本,而targetSdkVersion"API level that the application targets"。 (如果是这种情况,我假设compileSdkVersion必须大于或等于targetSdkVersion吗?
  • 他们的意思是一样的。 “编译目标” ==“应用程序目标的API级别”
  • 还有别的吗?

  • 我看到有人问过this question,但是一个答案只是引用了doc,这对我来说还不清楚。

    最佳答案

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

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

    例如,如the documentation所示:



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

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

    10-07 19:17
    查看更多