buildTypes no se puede aplicar a groovy.lang.Closure

241

Recibo esta advertencia en mi archivo gradle de proyecto:

Advertencia: (16, 5) 'buildTypes' no se puede aplicar a '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)'

Mi sección buildTypes es:

    buildTypes {
        debug {
            debuggable true
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }

Actualmente estoy usando Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 y targetSdkVersion 22. Intenté retroceder a 21 pero aún recibía la advertencia.

¿Qué causa esta advertencia y cómo se soluciona?

Jim Vitek
fuente
¿Ha aplicado el complemento: 'com.android.aplication' o 'com.android.library'?
Kirill Boyarshinov
@Kirill: com.android.application
Jim Vitek

Respuestas:

471

Para mí, el problema no se resolvió aplicando la solución anterior. En cambio, tuve que ir a la configuración dentro de Android Studio y seleccionar "Usar gradle wrapper":

En Android Studio, seleccione: Archivo \ Configuración \ Compilación, Ejecución, Implementación \ Herramientas de compilación \ Gradle

(Usuarios de Mac: Android Studio \ Preferencias ... \ Build, Execution, Deployment \ Build tools \ Gradle )

Marca: Usar el envoltorio de gradle predeterminado (predeterminado)

Esto eliminó todas las advertencias 'no se puede aplicar a' (groovy.lang.Closure ') en los archivos de compilación.

Peter
fuente
2
Esta es la respuesta correcta, el problema ocurrió cuando abrí el proyecto en Windows y luego en Linux (a través de Dropbox) cambia la ubicación de la distribución de gradle, por lo que es mejor usar el envoltorio de gradle predeterminado.
Rodrigo Direito
1
Tuve el mismo problema. Mi compañero de equipo trabaja en una máquina de Windows. Obtener actualizaciones me está dando este problema
chip
@Waterbear He editado la respuesta original debido a esto (he buscado un poco por esto también: D). Después de una revisión por pares, estará disponible :) Ver: i.imgur.com/BtCijIW.png
StefMa
De alguna manera 1.3.1 AS en Mac restablece esta configuración en Build -> Clean. Establecerlo de nuevo corrige la construcción. ¡Gracias!
Den Drobiazko
11
Algo estúpido con Android Studio, comenzó a mostrarme una advertencia cuando hice por build target 22 y buildToolsVersion 22.0.1 .... Para mí 'Usar el gradle wrapper predeterminado' ya estaba marcado como predeterminado (AS 2.0 Beta) ... simplemente corté mi bloque de código y lo pegué en el mismo lugar (sin cambios de código, sin cambios de configuración) ... ¡se ha eliminado la advertencia!
Umair
127

Tuve el mismo problema. Mover los buildTypes como la última entrada en la sección de Android funcionó para mí.

android {
    ...
    buildTypes {
    }
}
dorr
fuente
2
Es extraño que su posición haga la diferencia, pero aparentemente lo hace.
Jason Crosby
Esto también funciona para mí. ¿Tienes alguna idea de cómo funciona esto? Gracias.
myNameCoad
44
Esto también pareció funcionar para mí, pero luego deshice esos cambios y copié / pegué ese bloque en el mismo lugar y la advertencia también desapareció. Luego intenté deshacerlo todo y cerrar y volver a abrir el proyecto para replicar la advertencia, pero desapareció. Creo que es solo uno de esos tipos de advertencias.
elliptic1
Para mí, la respuesta de Peter despejó casi todas las advertencias, excepto por una advertencia al respecto buildTypes. Entonces, ¡esta solución funcionó para la última!
Hata
76

1 Corta y pega los "buildTypes" en la misma posición en la sección "android"

2 Re Sync Project

Luca Barillà
fuente
16

Para resolver este problema, en su Android Studio, vaya a Archivo -> Configuración . En la configuración, elija Build, Execution, Deployment -> Build Tools -> Gradle y seleccione "Usar gradle wrapper predeterminado (recomendado)" .

Después de reconstruir su build.gradle estará totalmente bien.

Ivan V
fuente
1
Esta es la respuesta correcta O puede seleccionar la ubicación correcta de gradle
anular el puntero
1
cómo es diferente a la respuesta de @ Peter.
AndyW
13

Si ninguna de las opciones anteriores funciona, haga lo siguiente

  1. Cambie el proyecto a Projectperspectiva en el "Explorador de proyectos".
  2. Eliminar .gradley buildcarpetas.
  3. Haga clic en Archivo -> Invalidar cachés / reiniciar ... -> Invalidar y reiniciar
  4. Ahora está funcionando, feliz codificación.
Atif Farrukh
fuente
7

Logré resolver mi problema simplemente haciendo esto: haga clic en "Archivo" y luego seleccione "Invalidar cachés / reiniciar

Fred
fuente
6

La forma más fácil de solucionar estos problemas de Gradle es recrear el proyecto para permitir que Android Studio reconfigure Gradle.

Simplemente seleccione "Abrir un proyecto existente de Android Studio" y elija su carpeta de proyecto.

Más detalles aquí .

AleFranz
fuente
4

esto funcionó para mí:

buildTypes.debug {
    ext.enableCrashlytics = false
}

buildTypes.release {
    debuggable false
    zipAlignEnabled true
    minifyEnabled false
    signingConfig signingConfigs.release
}
serggl
fuente
4

El problema se presenta cuando importa un proyecto a su entorno y el complemento Gradle se instala en una ubicación diferente de la que estaba en el original. Solo necesita señalar dónde está su instalación de Gradle.

Mover buildTypes o defaultConfig o lo que sea entre sí no es una solución completa

Chisko
fuente
Así es como finalmente resolví este problema ... 1. Navegue en Android Studio a: Archivo | Configuraciones | Archivo | Configuraciones | Construcción, Ejecución, Implementación | Herramientas de construcción | Gradle 2. Asegúrese de que no esté marcada, a pesar de que se recomienda mantener ... Use el Gradle Wrapper predeterminado (recomendado) 3. y que este esté marcado ... Use la distribución local de Gradle 4. y que Gradle Home esté configurado en esto, posiblemente con un posterior gradle-nn ... C: / Archivos de programa / Android / Android Studio1 / gradle / gradle-2.4 Puede que tenga que reiniciar Android Studio, reconstruir el proyecto, etc. pero el problema está resuelto.
Mick
3

El problema en cuestión es que la configuración de Android Studio que probablemente importó en la actualización todavía apuntaba a gradle-2.4 o algunas otras versiones de las que Android Studio 1.5 espera.

Para resolver este problema, debe abrir Configuración e ir a Compilar, Ejecutar, Implementar> Herramientas de compilación> Gradle y cambiar la ruta de inicio de su distribución local de gradle o seleccionar el envoltorio de gradle predeterminado.

Aplica y vuelve a sincronizar tu proyecto.

anthonymonori
fuente
2

Yo tuve el mismo problema. Comencé un nuevo proyecto y funcionó, así que simplemente copié el archivo build.gradle. En mi caso, la única diferencia fue la falta de la sección compileOptions. Lo eliminé de mi proyecto, sincronicé gradle, volví a insertar la sección compileOptions y luego sincronicé gradle nuevamente.

greywolf82
fuente
2

En su Android Studio, vaya a Archivo -> Configuración. Luego elija Build, Execution, Deployment -> Build Tools -> Gradle y seleccione "Usar gradle wrapper predeterminado (recomendado)".

Proyecto de reconstrucción.


fuente
2

En mi caso, mi buildTypessección estaba por encima de miproductFlavors sección. Intercambiando sus posiciones se libró de la advertencia:

ANTES DE:

buildTypes {

        debug {
            minifyEnabled false
            shrinkResources false
            ...//etc
        }
 }

 productFlavors {
    demo {
        ...//etc
    }
 }

DESPUÉS:

 productFlavors {
    demo {
        ...//etc
    }
 }    

 buildTypes {

        debug {
            minifyEnabled false
            shrinkResources false
            ...//etc
        }
 }

Estoy usando Android Studio 2.1.2 con la siguiente configuración en la parte superior de mi androidsección:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc
Tash Pemhiwa
fuente
1

Solía ​​tener esta advertencia, después de actualizar Android Studio.

Cuando fui a Configuración >> Herramientas de compilación >> Gradle , encontré que la ruta local de Gradle no era válida, ya que la versión de Gradle también se actualizó de 2.6 a 2.8.

Se corrigió la nueva ruta y la sincronización de Gradle eliminó la advertencia.

Otra forma es usar gradlewrapper.

HierroFlor
fuente
0

Cambiar distribuciónUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip a gradle-2.1-all.zip en gradle-wrapper.properties me resolvió el problema.

kengura
fuente
0

EDITAR: Así es como finalmente resolví este problema ...

  1. Navegue en Android Studio para:

    Archivo | Configuraciones | Construcción, Ejecución, Implementación | Herramientas de construcción | Gradle

  2. Asegúrese de que esto no esté marcado, a pesar de que se recomienda mantener ...

    Usar el envoltorio de Gradle predeterminado (recomendado)

  3. y que este está marcado ...

    Utilice la distribución local de gradle

  4. y que Gradle Home está configurado para esto, posiblemente con un gradle-nn posterior ...

    C: / Archivos de programa / Android / Android Studio1 / gradle / gradle-2.4

Puede que tenga que reiniciar Android Studio, reconstruir el proyecto, etc. pero el problema está resuelto.

Fin de EDITAR.

Estoy publicando esto para aconsejar a cualquier otra persona nueva sobre este problema que lo ignore. El proyecto se ejecuta perfectamente independientemente. Esto es simplemente un error en el sistema de compilación, con suerte se solucionará pronto. Publiqué un comentario y voté aquí, donde nuevamente es un tema activo ...

https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=76719

Después de intentar, sin éxito, las sugerencias en los siguientes tres hilos, volví a hacer todo el proyecto desde cero. Comencé un nuevo proyecto de Android Studio, copié todas las bibliotecas originales y los archivos principales en él, ignorando los archivos generados por el sistema de compilación y reconstruí el proyecto. Todo estuvo bien, excepto que todas esas advertencias "no se pueden aplicar a '(groovy.lang.Closure)'" reaparecieron con venganza. Luego revisé estas sugerencias nuevamente para asegurarme de que no había pasado por alto algo.

1 buildTypes no se puede aplicar a groovy.lang.Closure vaya a la configuración dentro de Android Studio y seleccione "Usar gradle wrapper": En Android Studio seleccione: Archivo \ Configuración \ Build, Execution, Deployment \ Build tools \ Gradle Mark: Use gradle predeterminado wrapper (predeterminado) Esto eliminó todas las advertencias 'no se puede aplicar a' (groovy.lang.Closure ') en los archivos de compilación.

2 'dependencias' no pueden aplicarse a '(groovy.lang.Closure)' Abra y edite el archivo: su proyecto / gradle / wrapper / gradle-wrapper.propertie. Edite el contenido como se muestra a continuación y guárdelo. Eliminar esta carpeta: su proyecto / .gradle. Haga clic en Sincronizar proyecto con archivos gradle, entonces está listo para comenzar.

3 https://github.com/DrKLO/Telegram/issues/870

Mi configuración es: Android Studio 1.3, compileSdk Versión 22, buildTools Versión "22.0.1"

Mick
fuente
0

eliminar la carpeta gradle debajo de la carpeta de la aplicación y volver a sincronizar el proyecto

Alex Perevozchykov
fuente
0

Todo lo que tuve que hacer para eliminar

productFlavors {
}

De

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

y la advertencia se fue.

El aspecto final fue así

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
Max
fuente
0

Cambiar el buildToolsVersionde

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

a

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

trabajó para mi.

Gergana Tsvetkova
fuente