什么是compileSdkVersion?

tas*_*had 2 java eclipse android

昨天刚从Eclipse搬到Android工作室,我正在设法弄清一切。在我的构建等级中,我现在看到一个“ compileSdkVersion”,而且我似乎无法弄清楚它是什么。我知道minSdk会告诉GooglePlay该应用程序可以处理多长时间的设备。并且那个targetSdk告诉设备是否天气,它应该切换到前向兼容性。但是我不知道什么是compileSdk以及应该如何处理。另外,作为一个附带问题,如果我将targetSdk设置为21,则在sdk 16上运行的设备是否以兼容模式运行?谢谢你的帮助!对此,我真的非常感激!

编辑:我请不要将我链接到android开发者网站。我已经读过,但我不明白为什么如果已有最小,最大和目标sdk版本,则在不同的sdk中进行编译会有所不同。再次感谢您的帮助!

这是gradle代码。

apply plugin: 'com.android.application'

android {
compileSdkVersion 17 
buildToolsVersion "19.1.0"

defaultConfig {
    applicationId "com.devname.myapp"
    minSdkVersion 10
    targetSdkVersion 21
}

buildTypes {
    release {
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
    }
}
}

dependencies {
compile 'com.android.support:support-v4:21.0.0'     
compile files('libs/libGoogleAnalyticsServices.jar')
}
Run Code Online (Sandbox Code Playgroud)

tas*_*had 5

对我的帖子的回复很好,但是我需要它对我无言以对。

我长期的解释在这里。

TL; DR我的深入解释

targetSdk意味着您已经在该设备上对其进行了测试,并且可以确保您的应用在所有设备上均可运行。从根本上说,这是android的一个“警告”,它说您的应用程序可以在此之前运行。如果设备版本高于此版本,则 android会自动将兼容性设置应用于相关设备。如果android版本低于此版本,则它将正常运行,因为targetSdk表示您的应用设置为哪个版本。如果我将targetSdk设置为16,则所有不超过16个的东西都可以使用,并且使用16以上版本的API的所有设备都将自动进入兼容模式,以使其正常工作。

compileSdk =您的应用使用了多少个功能。如果它使用的功能在Android L上可用,则必须使用API​​ 21编译应用程序,因为这是Android L的API版本。如果使用较低的compileSdk版本,则应用程序将无法构建,因为它不会能够找到您的应用具有的功能,因为这些功能不在较低的版本中。如果您的应用程序使用特定于更高版本的功能,则可以不理会它。平均而言,如果您的应用没有使用Android新版本专有的功能,则只需将compileSdk设置为17。

等等,但是targetSdk和compileSdk有什么区别?

好问题。targetSdk基本上是对Android操作系统的提示,它说:“嘿,由于我已经测试了此应用,因此保证该应用程序可在不超过此数量的所有设备上运行。”

compileSdk基本上是在与Android开发软件交流,“嘿,在构建此应用程序时,请确保包括该Android版本中的所有功能,因为我需要这些功能才能使该应用程序正常工作。

仅当您使用该Android版本中的功能时!

如果您没有在Lollipop中使用功能,则没有理由将compileSdk设置为21!你怎么会 您不需要它,因此没有理由使用所有这些额外功能来构建它。