build.gradle文件中的buildToolsVersion实际上做了什么?

时间:2015-10-16 08:59:19

标签: android android-build android-6.0-marshmallow

根据https://developer.android.com/tools/revisions/build-tools.html,此版本添加了对Android 6.0(包含新的requestPermission方法)的支持。

Revision 23.0.0 (August 2015) 
    Added support
    for the Android 6.0 (API level 23) release.

我正在使用android 6.0的新requestPermission方法,但是没有更新buildToolsVersion - 但是当我期望构建过程失败时程序仍然有效(参见附图)。

所以问题是:buildToolsVersion究竟做了什么?我想知道为什么版本22.0.1在不应该的时候工作? android studio是否绕过了build.gradle文件中的值?

enter image description here

build.gradle的相关部分

import groovy.swing.SwingBuilder
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
    compileSdkVersion 23
    buildToolsVersion "22.0.1"

    compileOptions {
        encoding "UTF-8"
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }


    defaultConfig {
        //Minimum FROYO
        minSdkVersion 4
        targetSdkVersion 23


<snip off unrelated parts>

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-v4:23.0.1'

    //    ads: google play
    googlePlayCompile 'com.android.support:appcompat-v7:23.0.1'
    googlePlayCompile 'com.google.android.gms:play-services-ads:7.5.0'

    testCompile 'org.robolectric:robolectric:2.4'
    testCompile 'junit:junit:4.12'
}

修改 the other question中的答案说我必须使用buildToolsVersion&gt; = compileSdkVersion来使用新功能。然而,我在不更新buildToolsVersion的情况下使用了新功能。

1 个答案:

答案 0 :(得分:0)

它是每个API级别的编译器版本。例如,如果我们使用compileSDKversion 20,我们可以使用buildToolsVersion 20.0.0或更高版本。