'dependencias' no se pueden aplicar a '(groovy.lang.Closure)'

121

No puedo solucionar este error:

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

Este es mi archivo 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
    }
 }
Ashwani Kottapalli
fuente
1
Estoy bastante seguro de que están muy relacionados y, como sugiere mi respuesta, creo que la marca de error es un error, de ahí la disparidad de soluciones. stackoverflow.com/questions/29133601/… Eso no quiere decir que la respuesta principal aquí no haga algunos puntos generales muy válidos acerca de su "actual" gradlecript
Seb Andraos

Respuestas:

22

Según lo que genera Android Studio, debe tener un archivo de proyecto de nivel superior build.gradley otro para su aplicación build.gradle.

Nivel superior:

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

Nivel de aplicación:

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

Pero incluso sin todo eso, su problema es que tiene una configuración dependenciesdentro de su androidcomplemento.

android {
    dependencies {
    }
}

Quita ese dependenciesbloque vacío .

EDITAR: También comencé a recibir este error con el último Android Studio, todo lo que tenía que hacer era agregar una versión más nueva del complemento Gradle y compilar la Versión 22 de SDK.

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()
    }
}
EpicPandaForce
fuente
11
Hice ese mismo problema :(
Ashwani Kottapalli
Para ser honesto, creo que deberías arreglar las citas extra y los espacios en tus dependencias Crouton, Universal-Image-Loader y googleplayServices. También debe usar solo una parte de los servicios de Google Play, de acuerdo con developer.android.com/google/play-services/setup.html
EpicPandaForce
no funciona ... ¿me puede dar identificación de fb o cualquier otro ... para que podamos entrenar? ¿Por favor?
Ashwani Kottapalli
... en ese caso, no sé cuál es tu error. :( la última vez que me sucedió esto, mi complemento de Android y Gradle estaban desactualizados, y estaba usando un tipo de configuración que ya no existía
EpicPandaForce
1
Depende de si está utilizando la línea de comandos o IDE. Y si IDE, entonces qué IDE.
EpicPandaForce
247

Puede ir a Preferencias y seleccionar "usar envoltorio de gradle predeterminado" y luego reconstruir el proyecto. Funciono bien para mi: ingrese la descripción de la imagen aquí

codingpuss
fuente
44
¿Alguien tiene una explicación de por qué sucede esto?
racs
1
Parece que después de haber actualizado de 1.4 a 1.5, esta configuración se "restableció" para usar la distribución local en mi máquina. Esta respuesta definitivamente resolvió el problema.
aparentemente divertido el
3
A partir de la versión 143.2532994, este problema parece volver a ocurrir ... ¿alguien es el mismo conmigo ...? Tan molesto ..
Primero
A pesar de que la respuesta seleccionada es muy elaborada y honesta, hay una razón por la cual esta respuesta tiene más votos a favor
Pavel Zdenek
Ah, sí, hay una razón: los usuarios de mac. En Windows, la página es diferente. "Nada que mostrar". La respuesta marcada es al menos de alguna manera útil.
Gangnus
37

Ir

Ventanas

Archivo -> Configuración -> Compilación, ejecución, implementación -> Herramientas de compilación -> Gradle

Mac

Preferencia -> Compilación, Ejecución, Implementación -> Herramientas de compilación -> Gradle

y seleccione Usar envoltura de gradle predeterminada

Mark Pazon
fuente
1
Windows Nada que seleccionar
Gangnus
2
Primero tienes que abrir el proyecto primero.
Raptor
Y en Linux es lo mismo que en Windows: Archivo -> Configuración -> Compilación, Ejecución, Implementación -> Herramientas de compilación -> Gradle. Puede editar su respuesta y escribir "Windows / Linux".
lenooh
18

Mi problema es que todo el archivo build.setting estaba ocupado con cannot be applied to '(groovy.lang.Closure)'mensajes de advertencia en lugar de suceder en una variable en particular.

He probado todas las soluciones proporcionadas por otros, pero ninguna de ellas me funciona. Terminé haciendo estos pasos y luego funciona de maravilla. Si tienes el mismo problema, pruébalo.

  1. Abrir y editar archivos: yourproject/gradle/wrapper/gradle-wrapper.properties. Edite el contenido para actualizar la versión de distribución de gradle como se muestra en la imagen a continuación y luego guárdelo.
  2. Eliminar esta carpeta: yourproject/.gradle.
  3. Haga clic Sync project with gradle files, entonces está listo para ir.

ingrese la descripción de la imagen aquí

Primero
fuente
1
No es necesario eliminar el directorio yourproject / .gradle. Si elige hacerlo, asegúrese de guardar las personalizaciones que haya realizado allí, como agregar un archivo gradle.properties con org.gradle.daemon = true (una optimización común). Sin embargo, puede simplemente reconstruir, y el contenedor de Gradle descargará la nueva versión especificada en distributionUrl, junto con las versiones anteriores. Está bien que los directorios de versiones anteriores permanezcan en el directorio gradle de su proyecto.
Mark McClelland
La actualización de la versión de Gradle gradle-wrapper.propertiesresolvió mi problema. ¡Gracias!
BVB
18

Si ya está utilizando el "envoltorio de gradle predeterminado" y no ayuda:

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

Si tampoco ayuda, intente en 2 pasos:

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

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

Después de reiniciar la advertencia debería desaparecer.

(Para mí funcionó y para Android Studio y para IntelliJ Idea)

Andrey
fuente
Trabajó para mi. Lo único que debe tener en cuenta es: si está utilizando su propio gradle en lugar del paquete incluido, también debe eliminarlo .gradleen su directorio de inicio.
1
Solo hacer la 2) instrucción funcionó para mí. ¡¡Gracias!!
manolodewiner
2
trabajó ... por 5 segundos. entonces recibí ese error nuevamente.
Yar
Es un poco frustrante lo mal que IntelliJ se ha vuelto reciente al analizar los proyectos correctamente. Esto solía ser su fuerte ... ahora parece que tropieza con lo más mínimo.
smaudet
4

Entré en las preferencias para probar una de las otras respuestas cuando noté una advertencia de que mi gradledirectorio personal estaba equivocado. Entonces abrí el buscador de archivos y elegí la gradleversión más nueva , y todos los errores desaparecieron. Imagen mostrada a continuación.

ingrese la descripción de la imagen aquí

estirado
fuente
1

Apuesto a que el problema no tiene ninguna relación con el código que le da advertencias, lo más probable es que sea su archivo de protección. Tenía lo siguiente en mi código y recibí la misma advertencia:

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

Al comentar runProguard false, todos mis problemas desaparecen, imagínense :)

Daniel Wilson
fuente
¿Daniel Wilson ayuda si cambias runProguarda minifyEnabled? Se proporciona más información aquí
Sergii N.
1

Tengo el mismo problema en Android Studio 2.2, funciona para mí:

original:

android {
...
}

dependencies {
...
}

mover dependenciesen android:

android {
...
   dependencies {
   ...
   }
}
Yakami
fuente
1

Resolví el problema en Android Studio al invalidar el caché y reiniciar.

File-> Invalidate Caches / Restart..

ingrese la descripción de la imagen aquí

ahmadalibaloch
fuente
1

Me encontré con un problema similar a esto en IntelliJ para un proyecto de Kotlin. Parece que el problema era que en mi proyecto, a pesar de que estaba configurado para usar JDK 8, las versiones de lenguaje y API de alguna manera se establecieron en 1.3. Ver Preferencias del proyecto> Facetas. En mi caso, marqué "usar la configuración del proyecto", pero la configuración manual por faceta también podría funcionar.

Tim Keating
fuente
0
  1. Cerrar el proyecto (Archivo / Cerrar proyecto),
  2. Seleccione "Abrir un proyecto de Android Studio existente" en el menú de inicio y seleccione la carpeta que contiene su proyecto de Android.

Este trabajo para mi.

zerob13
fuente
0

Los archivos de Gradle pueden hacerse explícitos en varios lugares para evitar tales errores. Ej. Cambio

configurations {

a

project.configurations {

o

task {
    description 'foo'

a

task {
    setDescription 'foo'
tkruse
fuente
0

Para solucionar el problema, simplemente cierre el proyecto, luego seleccione “Abrir un proyecto existente de Android Studio” en el menú de inicio y seleccione la carpeta que contiene su proyecto de Android. Cuidado, seleccione la carpeta , no el archivo de proyecto .iml.

Webdma
fuente
0

Corte y luego pegue los "buildTypes" en el mismo lugar en la sección "android" y vuelva a sincronizar (actualizar) Proyecto

Andrey
fuente