2015-04-21 56 views
114

我无法修复这个错误 '(groovy.lang.Closure)':'依赖' 不能应用于

dependencies cannot be applied to '(groovy.lang.Closure) 

这是我的gradle这个文件:基于

buildscript { 
    repositories { 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 

    dependencies { 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' 
    } 
} 
apply plugin: 'android' 
apply plugin: 'crashlytics' 

repositories { 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

dependencies { 
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') 
    compile fileTree(dir: 'libs', include: '*.jar') 
    compile project(':FRNDzTER_core') 
    compile project(':cropper') 
    compile project(':stickyListHeaders') 
    compile "com.nostra13.universalimageloader:universal-image-loader:${rootProject.universalImageLoaderVersion}" 
    compile "com.google.android.gms:play- services:${rootProject.googlePlayServicesVersion}" 
    compile "de.keyboardsurfer.android.widget:crouton:${rootProject.croutonVersion}" 
    compile "com.nineoldandroids:library:${rootProject.nineoldandroidsVersion}" 
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+' 
    compile 'com.crashlytics.android:crashlytics:1.+' 
} 

android{ 
    compileSdkVersion rootProject.compileSdkVersion 
    buildToolsVersion rootProject.buildToolsVersion 
    defaultConfig { 
     minSdkVersion rootProject.minSdkVersion 
     targetSdkVersion rootProject.targetSdkVersion 
     versionCode rootProject.versionCode 
     versionName rootProject.versionName 
    } 
    buildTypes { 
     release { 
      debuggable rootProject.prodDebug 
      proguardFile 'proguard.cfg' 
     } 
    } 

    dependencies { 
    } 

    packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
    lintOptions { 
     abortOnError false 
    } 
} 
+1

我敢肯定,这些都是非常相关性很强,正如我在那里的回答所表明的那样,我认为错误标记是一个错误,因此解决方案的差异。 http://stackoverflow.com/questions/29133601/buildtypes-cannot-be-applied-to-groovy-lang-closure/30823995#30823995 这并不是说这里的最佳答案并没有提出一些非常有用的一般观点你的“当前”gradle buildscript –

+0

看到这个http://stackoverflow.com/questions/29133601/buildtypes-cannot-be-applied-to-groovy-lang-closure – myNameCoad

回答

22

什么Android Studio生成的,您需要有一个顶级项目文件build.gradle,另一个为您的应用程序build.gradle

顶层:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
} 

应用水平:

apply plugin: 'com.android.application' 
apply plugin: 'crashlytics' 

android{ 
    compileSdkVersion rootProject.compileSdkVersion 
    buildToolsVersion rootProject.buildToolsVersion 
    defaultConfig { 
     minSdkVersion rootProject.minSdkVersion 
     targetSdkVersion rootProject.targetSdkVersion 
     versionCode rootProject.versionCode 
     versionName rootProject.versionName 
    } 
    buildTypes { 
     release { 
      debuggable rootProject.prodDebug 
      proguardFile 'proguard.cfg' 
     } 
    } 

    packagingOptions { 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
    } 
    lintOptions { 
     abortOnError false 
    } 
}  ` 

dependencies { 
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') 
    compile fileTree(dir: 'libs', include: '*.jar') 
    compile project(':FRNDzTER_core') 
    compile project(':cropper') 
    compile project(':stickyListHeaders') 
    compile "com.nostra13.universalimageloader:universal-image-   l      loader:${rootProject.universalImageLoaderVersion}" 
    compile "com.google.android.gms:play- services:${rootProject.googlePlayServicesVersion}" 
    compile " "de.keyboardsurfer.android.widget:crouton:${rootProject.croutonVersion}" 
    compile "com.nineoldandroids:library:${rootProject.nineoldandroidsVersion}" 
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+' 
    compile 'com.crashlytics.android:crashlytics:1.+' 
} 

但是,即使没有这一切,您的问题是,你有你的android插件配置中的一个dependencies。该空dependencies

android { 
    dependencies { 
    } 
} 

删除。

编辑:我也开始收到此错误了最新的Android工作室,所有我需要做的就是添加插件摇篮的新版本,并compileSdkVersion 22

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.3.0' 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 
+11

我这样做仍然是同样的问题:( –

+0

说实话,我认为您应该修复Crouton,Universal-Image-Loader和googleplayServices依赖关系中的额外引号和空格。根据http://developer.android.com/google/,您应该只使用部分Google Play服务。 play-services/setup.html – EpicPandaForce

+0

它不工作...你可以给我fb ID或其他...所以我们可以锻炼吗?请 –

1

我敢打赌,你的问题是与给你警告的那段代码完全无关,很可能它是你的proguard文件。我在我的代码如下,并得到了同样的警告:

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

注释掉runProguard false,我所有的问题走,去图:)

+0

如果您将'runProguard'改为'minifyEnabled',Daniel Wilson会有帮助吗?更多信息提供[这里](http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0) –

18

我的问题是,整个build.setting文件被cannot be applied to '(groovy.lang.Closure)'警告消息占用,而不是在任何特定变量上发生。

我尝试了其他人提供的所有解决方案,但没有一个适合我。 我最终完成了这些步骤,然后它就像一个魅力。如果遇到同样的问题,请尝试一下。

  1. 打开并编辑文件:yourproject/gradle/wrapper/gradle-wrapper.properties。编辑内容以更新gradle分发版本,如下图所示,然后保存。
  2. 删除此文件夹:yourproject/.gradle
  3. 点击Sync project with gradle files,那么你很好走。

enter image description here

+1

没有必要删除您的项目/ .gradle目录。如果您选择这样做,请确保保存您在那里做出的任何自定义设置,例如使用org.gradle.daemon = true(通用优化)添加gradle.properties文件。但是,您可以简单地重新构建,并且gradle包装器将下载distributionUrl中指定的新版本以及旧版本。旧版本目录保留在项目的gradle目录中很好。 – markproxy

+0

更新'gradle-wrapper.properties'中的gradle版本解决了我的问题。谢谢! – BVB

246

你可以去首选项,并选择“使用默认gradle这个包装”,然后重新生成项目。它的工作很适合我: enter image description here

+4

有没有人有解释为什么会发生这种情况? – racs

+4

@EpicPandaForce请将此标记为正确答案 – muetzenflo

+1

这似乎是从1.4更新到1.5之后,此设置得到了“重置”,而不是在我的机器上使用本地分配。这个答案明确解决了这个问题。 – fayerth

37

转到

的Windows

文件 - >设置 - >构建,执行,部署 - >生成工具 - >摇篮

的Mac

首选项 - >构建,执行,部署 - >构建工具 - > Gradle

,并选择使用默认gradle这个包装

+1

Windows。Nothing to select。 – Gangnus

+2

首先你必须先打开项目。 – Raptor

+0

在** Linux **上它和Windows一样:文件 - >设置 - >生成,执行,部署 - >编译工具 - > Gradle,你可以编辑你的答案并编写“Windows/Linux” – lenooh

4

我走进喜好尝试其他的答案中的一个时,我注意到一个警告,我gradle主目录是错误的。所以我打开了文件浏览器并选择了较新版本的gradle,所有的错误都消失了。图像如下所示。

enter image description here

0
  1. 关闭项目(File /关闭项目),
  2. 选择“打开的现有的Android Studio项目“,并选择包含Android项目的文件夹。

这个工作适合我。

16

如果你已经使用的是“默认gradle这个包装”,并没有帮助:

In Menu click: File -> Invalidate Caches/Restart... 

如果它也于事无补尝试在2个步骤:

1) Delete ".gradle" folder (and "build" folder if you have it already) 

2) In Menu click: File -> Invalidate Caches/Restart... 

重新启动后该警告应该消失。

(对我来说,它的工作,并为Android Studio和的IntelliJ IDEA)

+0

为我工作,唯一需要注意的是:如果你使用自己的gradle而不是捆绑的,你必须删除'。 gradle'也在您的主目录中 – sn0w

+1

只是在执行2)指令为我工作,谢谢!! – manolodewiner

+2

工作... 5秒钟,然后我再次得到那个错误 – Yar

1

我已经在Android Studio中2.2同样的问题,它为我工作:

原:

android { 
... 
} 

dependencies { 
... 
} 

举动dependenciesandroid

android { 
... 
    dependencies { 
    ... 
    } 
} 
0

摇篮文件可以在几个地方显式以避免这种错误。例如。更改

configurations { 

project.configurations { 

task { 
    description 'foo' 

task { 
    setDescription 'foo' 
0

要解决该问题,只需关闭该项目,然后选择“打开一个现有的Android Studio项目“在开始菜单上选择包含您的Android项目的文件夹。请注意,选择文件夹,而不是.iml项目文件。

0

我通过使缓存失效并重新启动来解决Android Studio中的问题。

File-> Invalidate Caches/Restart..

enter image description here

0

剪切并粘贴“buildTypes”在“Android”的部分,同一个地方重新同步(刷新)项目