Android compileSdkVersion和targetSdkVersion之间有什么区别?

Android compileSdkVersion和targetSdkVersion之间有什么区别?,android,sdk,android-gradle-plugin,android-build,Android,Sdk,Android Gradle Plugin,Android Build,我已经用Gradle查看了for building,但我仍然不确定compileSdkVersion和targetSdkVersion之间的区别 它所说的是: compileSdkVersion属性指定编译目标 那么,"编译目标"是什么? 我认为有两种可能的解释方式: compileSdkVersion是构建应用程序时使用的编译器版本,而targetSdkVersion是最新版本。(如果是这种情况,我假设compileSdkVersion必须大于或等于targetSdkVersion 它们的意思

我已经用Gradle查看了for building,但我仍然不确定
compileSdkVersion
targetSdkVersion
之间的区别

它所说的是:


compileSdkVersion
属性指定编译目标

那么,"编译目标"是什么?

我认为有两种可能的解释方式:

  • compileSdkVersion
    是构建应用程序时使用的编译器版本,而
    targetSdkVersion
    是最新版本。(如果是这种情况,我假设
    compileSdkVersion
    必须大于或等于
    targetSdkVersion
  • 它们的意思是一样的。“编译目标”==“应用程序目标的API级别”
  • 还有别的吗
  • 我知道以前有人问过这个问题,但其中一个答案只是引用了doc,这对我来说并不清楚。

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

    targetSdkVersion
    targetSdkVersion
    与您的应用程序的编译方式或您可以使用的API无关。
    targetSdkVersion
    应该表明您已经在上测试了您的应用程序(可能在上一个版本之前,包括上一个版本)你指定的版本。这更像是一个认证或签准,你在给Android操作系统一个提示,说明它应该如何处理你的应用程序的操作系统功能

    例如,如国家所述:

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

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

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

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

    targetSdkVersion
    targetSdkVersion
    与您的应用程序的编译方式或您可以使用的API无关。
    targetSdkVersion
    应该表明您已经在上测试了您的应用程序(可能在上一个版本之前,包括上一个版本)你指定的版本。这更像是一个认证或签准,你在给Android操作系统一个提示,说明它应该如何处理你的应用程序的操作系统功能

    例如,如国家所述:

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

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


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

    coMPileSDK版本
    应为最新稳定版本。
    targetSdkVersion
    应经过全面测试,且小于或等于
    compileSdkVersion

    compileSdkVersion
    应为最新稳定版本。
    targetSdkVersion
    应经过全面测试,小于或等于
    compileSdkVersion
    compileSdkVersion
    是应用程序在开发过程中编译时使用的SDK平台的版本(您应始终使用最新版本),此版本随您使用的API版本一起提供

    您将在
    build.gradle
    文件中看到:

    targetSdkVersion:
    包含您的应用程序在开发过程后随附到应用程序商店的信息,该应用程序商店允许它
    针对指定版本的Android平台
    。根据应用程序的功能,它可以针对低于当前版本的API版本。例如,您可以针对API 18,即使当前版本为租金是23英镑


    仔细看看这个官方Google。

    CompileSdkVersion
    是您的应用程序在开发过程中用于编译的SDK平台的版本(您应该始终使用最新版本),它与您使用的API版本一起提供

    您将在
    build.gradle
    文件中看到:

    targetSdkVersion:
    contai
    minSdkVersion <= targetSdkVersion <= compileSdkVersion
    
    minSdkVersion (lowest possible) <= targetSdkVersion == compileSdkVersion (latest SDK)
    
    if(client-sdk-version   <   min-sdk-versoin )
        client-can-not-install-apk;
    else
        client-can-install-apk;