buildTypes 不能应用于 groovy.lang.Closure

Posted

技术标签:

【中文标题】buildTypes 不能应用于 groovy.lang.Closure【英文标题】:buildTypes cannot be applied to groovy.lang.Closure 【发布时间】:2015-05-21 22:02:53 【问题描述】:

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

警告:(16, 5) 'buildTypes' 不能应用于 '(groovy.lang.Closure)'

我的 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,但仍然收到警告。

是什么导致了这个警告以及它是如何解决的?

【问题讨论】:

你申请了插件:'com.android.aplication'还是'com.android.library'? @Kirill: com.android.application 【参考方案1】:

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

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

(Mac 用户:Android Studio\Preferences...\Build, Execution, Deployment\Build tools\Gradle

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

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

【讨论】:

这是正确的答案,当我在 Windows 上打开项目然后在 Linux(通过 Dropbox)上打开项目时发生了问题,它改变了 gradle 分发的位置,所以最好使用默认的 gradle包装器。 我遇到了同样的问题。我的队友在 Windows 机器上工作。获取更新给了我这个问题 @Waterbear 因此,我已经编辑了原始答案(我也为此搜索了一段时间:D)。经过同行评审后,它将可用:) 请参阅:i.imgur.com/BtCijIW.png Mac 上的 1.3.1 AS 不知何故在 Build -> Clean 上重置了此设置。将其设置回去修复构建。谢谢! Android Studio 有点愚蠢,当我通过构建目标 22 和 buildToolsVersion 22.0.1 制作时,它开始向我显示警告......对我来说,“使用默认 gradle 包装器”已经被标记为默认值(AS 2.0 Beta)...我只是剪切我的代码块并粘贴在同一个地方(没有代码更改,没有配置更改)......警告已被删除!【参考方案2】:

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

android 
    ...
    buildTypes 
    

【讨论】:

奇怪的是它的位置应该会有所作为,但显然确实如此。 这也适用于我。你有什么想法吗?谢谢。 这似乎也对我有用,但后来我撤消了这些更改并将该块复制/粘贴到同一个地方,警告也消失了。然后我尝试撤消这一切并关闭并重新打开项目以复制警告,但它消失了。我认为这只是那些类型的警告之一。 对我来说,几乎所有警告都被彼得的回答清除了,除了关于 buildTypes 的警告。然后,这个解决方案适用于最后一个!【参考方案3】:

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

2 重新同步项目

【讨论】:

【参考方案4】:

要解决此问题,请在您的 Android Studio 中转到 文件 -> 设置。 在设置中选择构建、执行、部署 -> 构建工具 -> Gradle 并选择“使用默认 gradle wrapper(推荐)” 选项。

重建后,您的 build.gradle 将完全正常。

【讨论】:

这是正确答案,或者您可以选择合适的 gradle 位置 与@Peter 的回答有何不同。【参考方案5】:

如果以上选项均无效,请执行以下操作

    在“Project Explorer”中将项目更改为Project 透视图。 删除.gradlebuild 文件夹。 单击文件 -> 使缓存无效/重新启动... -> 无效并重新启动 现在可以正常工作了,编码愉快。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

只需选择“打开现有的 Android Studio 项目”并选择您的项目文件夹。

更多详情here.

【讨论】:

【参考方案8】:

这对我有用:

buildTypes.debug 
    ext.enableCrashlytics = false


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

【讨论】:

【参考方案9】:

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

在彼此之间移动 buildTypes 或 defaultConfig 或其他任何东西都不是一个完整的解决方案

【讨论】:

这就是我最终解决这个问题的方法... 1. 在 Android Studio 中导航到:文件 |设置 |文件 |设置 |构建、执行、部署 |构建工具 | Gradle 2. 确保未选中此选项,尽管建议保留...使用默认 Gradle Wrapper(推荐)3. 并且已选中此选项...使用本地 gradle 分发 4. 并且 Gradle Home 设置为这个,可能是以后的 gradle-nn ... C:/Program Files/Android/Android Studio1/gradle/gradle-2.4 您可能需要重新启动 Android Studio,重建项目等,但问题已解决。【参考方案10】:

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

要解决这个问题,你应该打开 Settings 并转到 Build, Execution, Deployment > Build Tools > Gradle 并更改本地 gradle 发行版的主路径 选择默认的 gradle 包装器。

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

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

在您的 Android Studio 中,转到文件 -> 设置。接下来选择 Build, Execution, Deployment -> Build Tools -> Gradle 并选择“Use default gradle wrapper (recommended)”。

重建项目。

【讨论】:

【参考方案13】:

在我的情况下,我的 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

【讨论】:

【参考方案14】:

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

【讨论】:

【参考方案15】:

我曾经在更新 Android Studio 后收到此警告。

当我转到 Settings>>Build Tools>>Gradle 时,我发现本地 Gradle 路径无效,因为 gradle 版本也从 2.6 更新到 2.8。

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

另一种方法是使用gradlewrapper

【讨论】:

【参考方案16】:

编辑: 这就是我最终解决这个问题的方法......

    在 Android Studio 中导航到:

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

    确保未选中此项,尽管建议保留...

    使用默认 Gradle Wrapper(推荐)

    并且这个被检查了......

    使用本地 gradle 分发

    Gradle Home 设置为这个,可能还有一个以后的 gradle-n.n ...

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

您可能需要重新启动 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。 点击 Sync project with gradle files,然后你就可以开始了。

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

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

【讨论】:

【参考方案17】:

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

【讨论】:

【参考方案18】:

我要做的就是删除

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'
        
    

【讨论】:

【参考方案19】:

buildToolsVersion

android 
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 

android 
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 

为我工作。

【讨论】:

以上是关于buildTypes 不能应用于 groovy.lang.Closure的主要内容,如果未能解决你的问题,请参考以下文章

无法为 BuildType_Decorated 获取“applicationVariants”的未知属性

了解 Gradle 和 buildType Task

Android Gradle 插件BuildType 编译类型配置 ① ( BuildType 编译类型简介 | BuildType#applicationIdSuffix 包名后缀配置 )

Android Gradle 插件BuildType 编译类型配置 ⑦ ( BuildType#testCoverageEnabled 配置 )

Android Gradle 插件BuildType 编译类型配置 ⑥ ( BuildType#signingConfig 配置 )

Android 自定义构建类型 BuildType