【问题标题】:'dependencies' cannot be applied to '(groovy.lang.Closure)'“依赖项”不能应用于“(groovy.lang.Closure)”
【发布时间】:2015-06-28 11:35:47
【问题描述】:

我无法修复此错误:

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

【问题讨论】:

标签: android groovy gradle


【解决方案1】:

您可以转到首选项并选择“使用默认 gradle 包装器”然后重建项目。它对我很有效:

【讨论】:

  • 有人解释为什么会这样吗?
  • 似乎在从 1.4 更新到 1.5 之后,此设置“重置”以在我的机器上使用本地发行版。这个答案肯定解决了这个问题。
  • 从 143.2532994 版本开始,这个问题似乎又发生了......有人和我一样......?好烦啊。。
  • 尽管选择的答案非常详尽和诚实,但这个答案的支持率要高出一个数量级是有原因的
  • 哦,是的,有一个原因 - mac 用户。在 Windows 上,页面是不同的。 “没什么可显示的”。标记的答案至少在某种程度上有用。
【解决方案2】:

前往

Windows

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

苹果机

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

并选择使用默认的 gradle 包装器

【讨论】:

  • 视窗。没有什么可以选择的。
  • 首先你必须先打开项目。
  • Linux 上与在 Windows 上相同:文件 -> 设置 -> 构建、执行、部署 -> 构建工具 -> Gradle。你可以编辑你的答案并写“Windows/Linux”。
【解决方案3】:

根据 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

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()
    }
}

【讨论】:

  • 我做了同样的问题:(
  • 老实说,我认为您应该修复 Crouton、Universal-Image-Loader 和 googleplayServices 依赖项中的额外引号和空格。根据developer.android.com/google/play-services/setup.html,您也应该只使用部分 Google Play 服务
  • 它不工作...你能给我 fb id 或任何其他...所以我们可以锻炼吗?请问?
  • ...在这种情况下,我不知道您的错误是什么。 :( 上次发生在我身上,我的 android 和 gradle 插件已经过时了,我使用的配置类型不再存在
  • 取决于您使用的是命令行还是 IDE。如果是 IDE,那是什么 IDE。
【解决方案4】:

如果您已经在使用“默认 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
  • 只执行 2) 指令对我有用。谢谢!!
  • 工作了 5 秒钟。然后我又遇到了那个错误。
  • IntelliJ 最近在正确解析项目方面变得多么糟糕,这有点令人沮丧。这曾经是它的强项……现在它感觉就像是在最轻微的事情上绊倒。
【解决方案5】:

我的问题是整个 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,就可以开始了。

【讨论】:

  • 不需要删除yourproject/.gradle目录。如果您选择这样做,请务必保存您在此处所做的任何自定义,例如添加 gradle.properties 文件 org.gradle.daemon=true (一种常见的优化)。但是,您可以简单地重新构建,并且 gradle 包装器将下载在 distributionUrl 中指定的新版本,以及旧版本。旧版本的目录可以保留在项目的 gradle 目录中。
  • gradle-wrapper.properties 中更新 gradle 版本解决了我的问题。谢谢!
【解决方案6】:

当我注意到我的gradle 主目录错误的警告时,我进入首选项尝试其他答案之一。所以我打开文件浏览器并选择了较新的gradle 版本,所有的错误都消失了。图片如下所示。

【讨论】:

    【解决方案7】:

    我敢打赌,这个问题与给你警告的那段代码完全无关,很可能是你的 proguard 文件。我的代码中有以下内容并收到相同的警告:

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

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

    【讨论】:

    • Daniel Wilson 将runProguard 改为minifyEnabled 有帮助吗?提供更多信息here
    【解决方案8】:

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

    原文:

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

    dependencies 移动到android

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

    【讨论】:

      【解决方案9】:

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

      File-> Invalidate Caches / Restart..

      【讨论】:

        【解决方案10】:

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

        【讨论】:

          【解决方案11】:
          1. 关闭项目(文件/关闭项目),
          2. 在开始菜单中选择“打开现有的 Android Studio 项目”,然后选择包含您的 Android 项目的文件夹。

          这对我有用。

          【讨论】:

            【解决方案12】:

            Gradle 文件可以在多个位置显式化以避免此类错误。例如。改变

            configurations {
            

            project.configurations {
            

            task {
                description 'foo'
            

            task {
                setDescription 'foo'
            

            【讨论】:

              【解决方案13】:

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

              【讨论】:

                【解决方案14】:

                将“buildTypes”剪切并粘贴到“android”部分和重新同步(刷新)项目的相同位置

                【讨论】:

                  【解决方案15】:

                  对于使用 M1 Intellij IDEA 的人,只需添加 build.gradle(:app)

                  //noinspection GroovyAssignabilityCheck
                  
                  buildFeatures {
                          viewBinding
                      }
                  

                  【讨论】:

                    【解决方案16】:

                    我用 gradle 2.10 解决了这个问题。

                    在这里下载:http://gradle.org/gradle-download/

                    并像这样设置您的本地 gradle 分布:

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2015-05-21
                      • 2015-06-15
                      • 2015-12-30
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-04-11
                      • 2016-09-21
                      • 1970-01-01
                      相关资源
                      最近更新 更多