'依赖关系'不能应用于'(groovy.lang.Closure)'


121

我无法解决此错误:

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
我敢肯定,它们之间的关系非常密切,正如我在那里的回答所暗示的那样,我认为错误标记是一个错误,因此解决方案存在差异。stackoverflow.com/questions/29133601/…但这并不是说最重要的答案并未就您的“当前” gradle构建脚本提出一些非常有效的一般观点
Seb Andraos

Answers:


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

但是即使没有所有这些,您的问题仍然是您dependenciesandroid插件配置中有一个。

android {
    dependencies {
    }
}

删除该空dependencies块。

编辑:我也开始使用最新的Android Studio收到此错误,我所要做的就是添加较新版本的Gradle插件和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
我还是
遇到了

老实说,我认为您应该在Crouton,Universal-Image-Loader和googleplayServices依赖项中修复多余的引号和空格。根据developer.android.com/google/play-services/setup.html
EpicPandaForce,2015年

它不起作用...您能给我fb ID或其他任何信息...以便我们锻炼吗?请?
Ashwani Kottapalli

...在那种情况下,我不知道您的错误是什么。:(上次发生在我身上,我的android和gradle插件已过时,并且我使用的配置类型不再存在
EpicPandaForce 2015年

1
取决于您使用的是命令行还是IDE。如果是IDE,那么是什么IDE。
EpicPandaForce 2015年

247

您可以转到“首选项”并选择“使用默认gradle包装器”,然后重新生成项目。对我来说效果很好: 在此处输入图片说明


4
有人解释为什么会发生这种情况吗?
racs 2015年

1
从1.4更新到1.5后,此设置似乎“重置”为在我的计算机上使用本地发行版。这个答案肯定解决了这个问题。
似乎

3
从143.2532994版本开始,这个问题似乎再次发生...与我相同的人...?真烦人..
Arst 2016年

尽管选择的答案非常详尽和诚实,但仍有一个原因使该答案具有更高数量级的认可
Pavel Zdenek

哦,是的,这是有原因的-mac用户。在Windows上,页面是不同的。“没什么可显示的”。标记的答案至少在某种程度上有用。
Gangnus

37

视窗

文件->设置->构建,执行,部署->构建工具-> Gradle

苹果电脑

偏好->构建,执行,部署->构建工具-> Gradle

并选择使用默认gradle包装器


1
视窗。没有选择。
Gangnus

2
首先,您必须先打开项目。
猛禽

Linux上,与Windows上的相同:文件->设置->构建,执行,部署->构建工具-> Gradle。您可以编辑答案并编写“ Windows / Linux”。
lenooh

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,然后就可以了。

在此处输入图片说明


1
无需删除yourproject / .gradle目录。如果选择这样做,请确保保存在此所做的所有自定义设置,例如,使用org.gradle.daemon = true(常见的优化)添加gradle.properties文件。但是,您只需重建即可,并且gradle包装器将下载distributionUrl中指定的新版本以及旧版本。较旧版本的目录可以保留在项目的gradle目录中。
马克·麦克莱兰

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

18

如果您已经在使用“默认gradle包装器”,则没有帮助:

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

如果仍然不能解决问题,请尝试以下两个步骤:

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

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

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

(对我来说,它适用于Android Studio和IntelliJ Idea)


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

1
只是执行2)指令对我有用。谢谢!!
manolodewiner '16

2
工作了5秒钟。然后我又得到了那个错误。
2016年

IntelliJ最近对正确解析项目的了解有多糟糕,这令人有些沮丧。这曾经是它的长处...现在感觉好像跌倒了一点。
smaudet

4

当我注意到我的gradle主目录错误时,我进入了偏好设置来尝试其他答案之一。因此,我打开了文件浏览器并选择了较新的gradle版本,所有错误均消失了。如下图所示。

在此处输入图片说明


1

我敢打赌,问题与发出警告的代码完全无关,很可能是您的proguard文件。我的代码中包含以下内容,并收到了相同的警告:

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

通过注释掉runProguard false,我所有的问题都消失了,去看看:)


如果改为runProguard,丹尼尔·威尔逊(Daniel Wilson)会有所帮助minifyEnabled吗?在此处
Sergii N.

1

我在android studio 2.2中有同样的问题,它对我有用:

原版的:

android {
...
}

dependencies {
...
}

移动dependenciesandroid

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


1

我在IntelliJ的Kotlin项目中遇到了与此类似的问题。看起来问题出在我的项目中,即使它被设置为使用JDK 8,语言和API版本也被设置为1.3。请参阅项目首选项>构面。就我而言,我勾选了“使用项目设置”,但按每个方面手动设置它们也可能起作用。


0
  1. 关闭项目(文件/关闭项目),
  2. 在开始菜单上选择“打开现有的Android Studio项目”,然后选择包含您的Android项目的文件夹。

这为我工作。


0

可以在多个地方使Gradle文件显式以避免这种错误。例如变化

configurations {

project.configurations {

要么

task {
    description 'foo'

task {
    setDescription 'foo'

0

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


0

剪切然后将“ buildTypes”粘贴到“ android”部分中的同一位置,然后重新同步(刷新)项目


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.