buildTypes不能应用于groovy.lang.Closure


241

我在我的项目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和targetSdkVersion22。我尝试将其降级到21,但仍收到警告。

是什么导致此警告及其解决方法?


您是否已应用插件:“ com.android.aplication”或“ com.android.library”?
Kirill Boyarshinov

@Kirill:com.android.application
Jim Vitek

Answers:


471

对我来说,应用上述解决方案并不能解决问题。相反,我必须转到Android Studio中的设置,然后选择“使用gradle包装器”:

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

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

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

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


2
这是正确的答案,当我在Windows上打开项目,然后在Linux(通过Dropbox)上打开项目时,就发生了问题,它更改了gradle分发的位置,因此最好使用默认的gradle包装器。
Rodrigo Direito

1
我遇到过同样的问题。我的队友在Windows机器上工作。获取更新给了我这个问题
芯片

@Waterbear因为这个原因我已经编辑了原始答案(我也搜索了一段时间:D)。经过同行评审后,它将可用:)参见:i.imgur.com/BtCijIW.png
StefMa

在Mac上以某种方式1.3.1 AS在Build-> Clean上重置此设置。放回原位修复构建。谢谢!
Den Drobiazko 2015年

11
Android Studio有点愚蠢,当我由构建目标22和buildToolsVersion 22.0.1制作时,它开始向我显示警告。剪切我的代码块并将其粘贴到同一位置(无代码更改,无配置更改)....警告已删除!
Umair

127

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

android {
    ...
    buildTypes {
    }
}

2
奇怪的是,它的位置应该有所作为,但显然可以。
杰森·克罗斯比

这也对我有用。您有什么想法吗?谢谢。
myNameCoad 2015年

4
这似乎也对我有用,但是后来我撤消了这些更改,并将该块复制/粘贴到同一位置,并且警告也消失了。然后,我尝试撤消所有操作,然后关闭并重新打开项目以复制警告,但警告消失了。我认为这只是这些警告之一。
elliptic1

对我而言,彼得的回答几乎消除了所有警告,但关于的警告除外buildTypes。然后,此解决方案适用于最后一个解决方案!
hata 2013年


16

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

重建后,您的build.gradle将完全可以。


1
这是正确的答案,或者您可以选择适当的gradle位置
空指针

1
与@Peter的答案有何不同。
AndyW '16

13

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

  1. 将项目更改为 Project在“项目资源管理器”透视图。
  2. 删除.gradlebuild文件夹。
  3. 单击文件 ->使高速缓存无效/重新启动...- >无效并重新启动
  4. 现在可以正常工作了,编码愉快。

7

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


6

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

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

更多细节在这里


4

这为我工作:

buildTypes.debug {
    ext.enableCrashlytics = false
}

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

4

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

在彼此之间移动buildTypes或defaultConfig或其他内容不是一个完整的解决方案


这就是我最终解决此问题的方式... 1.在Android Studio中导航至:设置| 档案| 设置| 构建,执行,部署| 生成工具| Gradle2。尽管建议保留它,也请确保未选中它。使用默认的Gradle包装器(推荐)3.并选中此选项。使用本地gradle分发4.并将Gradle Home设置为C:/ Program Files / Android / Android Studio1 / gradle / gradle-2.4您可能必须重新启动Android Studio,重建项目等,但问题已解决。
米克

3

眼下的问题是您的Android Studio设置可能在升级时导入的仍指向gradle-2.4或Android Studio 1.5预期的其他一些版本。

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

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


2

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


2

在您的Android Studio中,转到“文件”->“设置”。接下来,选择“构建,执行,部署->构建工具-> Gradle”,然后选择“使用默认gradle包装器(推荐)”。

重建项目。


2

就我而言,我的buildTypes部分高于我的productFlavors部分。互换立场摆脱了警告:

之前:

buildTypes {

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

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

后:

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

 buildTypes {

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

我在本android节顶部使用具有以下配置的Android Studio 2.1.2 :

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

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

1

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

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

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

另一种方法是使用gradlewrapper


0

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


0

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

  1. 在Android Studio中导航至:

    档案| 设置| 构建,执行,部署| 生成工具| 摇篮

  2. 即使建议保留此选项,也请确保未选中此选项。

    使用默认Gradle包装器(推荐)

  3. 并检查了这个...

    使用本地Gradle分发

  4. 并将Gradle Home设置为此,并可能稍后发布gradle-nn ...

    C:/程序文件/ 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个 buildType应用于groovy.lang。关闭 转到Android Studio中的设置,然后选择“使用gradle包装器”:在Android Studio中选择:File \ Settings \ Build,Execution,Deployment \ Build tools \ Gradle标记:使用默认gradle包装器(默认)这将删除所有“无法应用于”生成文件中的“(groovy.lang.Closure”)警告。

2 '的依赖性'不能被应用到'(groovy.lang.Closure)' 开启和编辑文件:yourproject / gradle这个/包装/ gradle这个-wrapper.propertie。如下图所示编辑内容,然后保存。删除此文件夹:yourproject / .gradle。单击与gradle文件同步项目,然后就可以了。

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

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



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'
        }
    }
}

0

buildToolsVersion从改变

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.