构建类型无法应用于 groovy.lang.Closure。

244

我在我的项目gradle文件中收到了以下警告:

警告:(16,5)'buildTypes' cannot be applied to '(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,但仍然收到警告。

是什么导致了这个警告,该如何解决?


你是否应用了插件:'com.android.application' 或 'com.android.library'? - Kirill Boyarshinov
@Kirill:com.android.application - Jim Vitek
19个回答

471

对于我来说,应用上述解决方案并没有解决问题。相反,我不得不进入Android Studio设置并选择“使用Gradle Wrapper”:

在Android Studio中选择: 文件\设置\Build, Execution, Deployment\Build tools\Gradle

(苹果电脑用户:Android Studio\偏好设置...\Build, Execution, Deployment\Build tools\Gradle )

勾选:Use default gradle wrapper (default)

这个操作移除了构建文件中所有关于 'cannot be applied to '(groovy.lang.Closure')' 的警告。


2
这是正确的答案,问题出现在我在Windows上打开项目,然后通过Dropbox在Linux上打开时(它改变了gradle分发的位置),所以最好使用默认的gradle wrapper。 - Rodrigo Direito
1
我遇到了同样的问题。我的队友使用的是Windows机器。获取更新时出现了这个问题。 - chip
这对我很有效,除了最初我的所有设置都给了我这个警告。在遵循@Peter的建议后,只有buildTypes给了我警告,所以我按照下面建议的方式剪切和粘贴它,这也解决了问题。 - Roberto
我已经将gradle-wrapper.properties更改为指向本地相对文件的distributionUrl(由于防火墙原因,我后来意识到答案是使用本地gradle安装而不是gradlew)。由于某种原因,Android Studio(至少版本1.4)无法正确识别本地相对gradle分发方式。应用程序仍然构建,但我在IDE中收到了一堆警告。将其更改为绝对路径或远程URL可以消除警告。 - hair raisin
11
使用Android Studio时遇到了一些问题,当我使用构建目标22和buildToolsVersion 22.0.1进行构建时,它开始显示警告... 对于我来说,“使用默认gradle包装程序”已经被标记为默认(AS 2.0 Beta)... 我只是将我的代码块剪切并粘贴到完全相同的位置(没有代码更改,没有配置更改)... 警告已被移除! - Umair
显示剩余7条评论

129

我遇到了同样的问题,将buildTypes作为android部分中的最后一项可以解决这个问题。

android {
    ...
    buildTypes {
    }
}

2
奇怪的是,它的位置似乎会产生影响,但事实上确实如此。 - Jason Crosby
这对我也有效。你有任何想法如何工作吗?谢谢。 - myNameCoad
4
这似乎对我也起作用,但后来我撤销了那些更改,并将那个代码块复制粘贴回到同一位置,警告也消失了。然后我试图撤销所有更改并关闭、重新打开项目以重现该警告,但它已经消失了。我认为这只是其中一种警告。 - elliptic1
对我来说,Peter的回答几乎清除了所有警告,除了一个关于buildTypes的警告。然后,这个解决方案对最后一个问题起作用了! - hata

76

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

2 重新同步项目


15
为了解决这个问题,在你的Android Studio中进入 文件 -> 设置。 在设置中选择 构建,执行,部署 -> 构建工具 -> Gradle 并选择 "使用默认gradle包装程序(推荐)" 选项。
重新构建后,你的 build.gradle 将完全正常。

1
这是正确的答案,或者您可以选择适当的Gradle位置。 - void pointer
3
与彼得的答案相比有何不同? - AndyW

14
如果以上选项都无法解决问题,则按照以下步骤进行操作:
  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
}

3
问题出现在当你将一个项目导入到你的环境中时,Gradle插件安装的位置与原来不同。你需要指明你的Gradle安装位置。
移动buildTypes或defaultConfig等并不能完全解决问题。

这是我最终解决这个问题的方法...
  1. 在Android Studio中导航到: 文件|设置|文件|设置|构建、执行、部署|构建工具|Gradle
  2. 确保取消选中此项,尽管建议保留... 使用默认Gradle包装器(推荐)
  3. 确保选中此项... 使用本地gradle分发
  4. 确保Gradle Home设置为此路径,可能是更高版本的gradle-n.n... C:/Program Files/Android/Android Studio1/gradle/gradle-2.4
您可能需要重新启动Android Studio、重建项目等,但问题已经解决。
- Mick

3
问题在于,您的Android Studio设置可能是升级时导入的,仍然指向gradle-2.4或其他版本,而不是Android Studio 1.5所期望的版本。
要解决此问题,您应该打开“设置”,进入“构建、执行、部署 > 构建工具 > Gradle”并更改本地Gradle分布的主目录路径,或选择默认的Gradle Wrapper。
应用并重新同步您的项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接