buildTypes不能应用于groovy.lang.Closure

时间:2015-03-18 22:05:44

标签: android-studio android-gradle

我在项目gradle文件中收到此警告:

  

警告:(16,5)' buildTypes'不能应用于'(groovy.lang.Closure< com.android.build.gradle.internal.dsl.BuildType>)'

我的buildTypes部分是:

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

我目前正在使用Android Studio 1.1.0,compileSdkVersion 22,buildToolsVersion 22.0.0和targetSdkVersion 22.我尝试退回到21但仍然收到警告。

导致此警告的原因是什么?它是如何修复的?

18 个答案:

答案 0 :(得分:470)

对我来说,通过应用上述解决方案并未解决问题。相反,我必须转到Android Studio中的设置并选择"使用gradle wrapper":

在Android Studio中选择: 文件\设置\构建,执行,部署\构建工具\ Gradle

(Mac用户: Android Studio \偏好设置...... \构建,执行,部署\构建工具\ Gradle

标记:使用默认gradle包装器(默认)

这删除了所有'无法应用于构建文件中的'(groovy.lang.Closure')警告。

答案 1 :(得分:126)

我有同样的问题。移动buildTypes作为android部分中的最后一个条目为我工作。

android {
    ...
    buildTypes {
    }
}

答案 2 :(得分:75)

1剪切并粘贴" buildTypes"在" android"中的相同位置部分

2重新同步项目

答案 3 :(得分:16)

要解决此问题,请在Android Studio中转到文件 - >设置。 在设置中选择构建,执行,部署 - >构建工具 - >摇篮 并选择"使用默认gradle包装器(推荐)" 选项。

重建后, build.gradle 将完全没问题。

答案 4 :(得分:7)

我设法通过简单地解决我的问题: 单击“文件”,然后选择“使高速缓存无效/重新启动

答案 5 :(得分:6)

解决此Gradle问题的最简单方法是重新创建项目,让Android Studio重新配置Gradle。

只需选择"打开现有的Android Studio项目"并选择你的项目文件夹。

更多详情here

答案 6 :(得分:4)

这对我有用:

buildTypes.debug {
    ext.enableCrashlytics = false
}

buildTypes.release {
    debuggable false
    zipAlignEnabled true
    minifyEnabled false
    signingConfig signingConfigs.release
}

答案 7 :(得分:4)

当您将项目导入环境并且Gradle插件安装在与原始插件不同的位置时,会出现此问题。您只需要指出Gradle安装的位置。

移动buildTypes或defaultConfig或彼此之间的任何内容都不是一个完整的解决方案

答案 8 :(得分:3)

目前的问题是您在升级时可能导入的Android Studio设置仍然指向gradle-2.4或Android Studio 1.5期望的其他版本。

要解决此问题,您应该打开设置并转到构建,执行,部署>构建工具> Gradle 并更改本地gradle分配的主路径选择默认的gradle包装。

应用并重新同步您的项目。

答案 9 :(得分:2)

我遇到了同样的问题。我开始了一个新项目并且它有效,所以我只是复制了build.gradle文件。在我的情况下,唯一的区别是缺少compileOptions部分。我从项目中删除了它,同步gradle,重新插入了compileOptions部分,然后再次同步gradle。

答案 10 :(得分:2)

就我而言,我的buildTypes部分位于productFlavors部分之上。交换他们的位置摆脱了警告:

在:

buildTypes {

        debug {
            minifyEnabled false
            shrinkResources false
            ...//etc
        }
 }

 productFlavors {
    demo {
        ...//etc
    }
 }

在:

 productFlavors {
    demo {
        ...//etc
    }
 }    

 buildTypes {

        debug {
            minifyEnabled false
            shrinkResources false
            ...//etc
        }
 }

我正在使用Android Studio 2.1.2,并在android部分的顶部添加以下配置:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc

答案 11 :(得分:2)

在Android Studio中,转到文件 - >设置。接下来选择构建,执行,部署 - >构建工具 - > Gradle并选择“Use default gradle wrapper(recommended)”。

重建项目。

答案 12 :(得分:1)

在我更新Android Studio之后,我曾经有过此警告。

当我去设置>>构建工具>> Gradle 时,我发现本地Gradle路径无效,因为gradle版本也从2.6更新到2.8。

修复了新路径并重新同步gradle删除了警告。

另一种方法是使用 gradlewrapper

答案 13 :(得分:0)

更改buildToolsVersion
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

为我工作。

答案 14 :(得分:0)

我只需要删除

productFlavors {
}

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

警告消失了。

最终看起来像这样

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

答案 15 :(得分:0)

删除app文件夹下的gradle文件夹并重新同步项目

答案 16 :(得分:0)

编辑: 这就是我最终解决了这个问题......

  1. 在Android Studio中导航至:

    文件|设置|构建,执行,部署|构建工具|摇篮

  2. 确保未经检查,尽管建议保留...

    使用默认Gradle Wrapper(推荐)

  3. 并检查了这个......

    使用本地gradle分发

  4. 并且Gradle Home设置为此,可能还有一个gradle-n.n ......

    C:/ Program Files / Android / Android Studio1 / gradle / gradle-2.4

  5. 您可能必须重新启动Android Studio,重建项目等,但问题已解决。

    编辑结束。

    我发布此帖子是为了建议其他新问题的人忽略它。该项目无论如何运行完美。这只是构建系统中的一个错误,希望很快得到解决。我发表评论并在这里投票,这又是一个活跃的话题......

    https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=76719

    尝试后,在以下三个线程中的建议失败,我从头开始重新制作整个项目。我启动了一个新的Android Studio项目,将所有原始库和主文件复制到其中,忽略了构建系统生成的任何文件并重建了项目。一切都很好,除了所有那些“无法应用于'(groovy.lang.Closure)'”的警告重新出现了。然后我再次通过这些建议,以确定我没有忽略某些东西。

    1 buildTypes cannot be applied to groovy.lang.Closure 转到Android Studio中的设置,然后选择“使用gradle wrapper”: 在Android Studio中选择:File \ Settings \ Build,Execution,Deployment \ Build tools \ Gradle 标记:使用默认gradle包装器(默认) 这删除了所有'无法应用于构建文件中的'(groovy.lang.Closure')警告。

    2 'dependencies' cannot be applied to '(groovy.lang.Closure)' 打开并编辑文件:yourproject / gradle / wrapper / gradle-wrapper.propertie。编辑内容如下图所示保存。 删除此文件夹:yourproject / .gradle。 单击“使用gradle文件同步项目”,然后就可以了。

    3 https://github.com/DrKLO/Telegram/issues/870

    我的配置是: Android Studio 1.3,compileSdk版本22,buildTools版本“22.0.1”

答案 17 :(得分:0)

在gradle-wrapper.properties中将distributionUrl = https://services.gradle.org/distributions/gradle-2.1-bin.zip更改为gradle-2.1-all.zip解决了我的问题。