buildTypes ne peut pas être appliqué à groovy.lang.Closure

241

Je reçois cet avertissement dans mon fichier de notes de projet:

Avertissement: (16, 5) 'buildTypes' ne peut pas être appliqué à '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)'

Ma section buildTypes est:

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

J'utilise actuellement Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 et targetSdkVersion 22. J'ai essayé de reculer à 21 mais recevais toujours l'avertissement.

Qu'est-ce qui cause cet avertissement et comment est-il corrigé?

Jim Vitek
la source
Avez-vous appliqué le plugin: 'com.android.aplication' ou 'com.android.library'?
Kirill Boyarshinov
@Kirill: com.android.application
Jim Vitek

Réponses:

471

Pour moi, le problème n'a pas été résolu en appliquant la solution ci-dessus. Au lieu de cela, j'ai dû aller dans les paramètres d'Android Studio et sélectionner "Utiliser le wrapper gradle":

Dans Android Studio, sélectionnez: Fichier \ Paramètres \ Build, Execution, Deployment \ Build tools \ Gradle

(Utilisateurs Mac: Android Studio \ Préférences ... \ Build, Execution, Deployment \ Build tools \ Gradle )

Marque: Utiliser un wrapper de gradle par défaut (par défaut)

Cela a supprimé tous les avertissements «ne peut pas être appliqué à» (groovy.lang.Closure ») dans les fichiers de construction.

Peter
la source
2
Ceci est la bonne réponse, le problème est survenu lorsque j'ai ouvert le projet sur Windows puis sur Linux (via Dropbox), cela change l'emplacement de la distribution de gradle, il est donc préférable d'utiliser le wrapper de gradle par défaut.
Rodrigo Direito
1
J'ai eu le même problème. Mon coéquipier travaille sur une machine Windows. La récupération des mises à jour me donne ce problème
puce
@Waterbear J'ai édité la réponse originale à cause de cela (j'ai aussi cherché pendant un certain temps: D). Après un examen par les pairs, il sera disponible :) Voir: i.imgur.com/BtCijIW.png
StefMa
D'une manière ou d'une autre, 1.3.1 AS sur Mac réinitialise ce paramètre sur Build -> Clean. Le restaurer corrige la construction. Merci!
Den Drobiazko
11
Quelque chose de stupide avec Android Studio, il a commencé à me montrer un avertissement lorsque j'ai fait par build target 22 et buildToolsVersion 22.0.1 .... Pour moi, `` Utiliser le wrapper de gradle par défaut '' était déjà marqué par défaut (AS 2.0 Beta) ... couper mon bloc de code et le coller au même endroit (pas de changement de code, pas de changement de configuration) .... l'avertissement a été supprimé!
Umair
127

J'ai eu le même problème. Déplacer les buildTypes comme dernière entrée dans la section Android a fonctionné pour moi.

android {
    ...
    buildTypes {
    }
}
dorr
la source
2
Bizarre que sa position fasse une différence mais apparemment c'est le cas.
Jason Crosby
Cela fonctionne aussi pour moi. Avez-vous des idées sur la façon dont cela fonctionne? Merci.
myNameCoad
4
Cela semblait fonctionner pour moi aussi, mais j'ai ensuite annulé ces modifications et copié / collé ce bloc au même endroit et l'avertissement a également disparu. Ensuite, j'ai essayé de tout annuler, de fermer et de rouvrir le projet pour répliquer l'avertissement, mais il avait disparu. Je pense que ce n'est qu'un de ces types d'avertissements.
elliptic1
Pour moi, presque des avertissements ont été effacés par la réponse de Peter, à l'exception d'un avertissement concernant buildTypes. Ensuite, cette solution a fonctionné pour la dernière!
hata
76

1 Coupez et collez les "buildTypes" à la même position dans la section "android"

2 Projet Re Sync

Luca Barillà
la source
16

Pour résoudre ce problème, dans votre Studio Android, allez dans Fichier -> Paramètres . Dans les paramètres, choisissez Build, Execution, Deployment -> Build Tools -> Gradle et sélectionnez l' option "Use default gradle wrapper (recommended)" .

Après la reconstruction, votre build.gradle sera tout à fait correct .

Ivan V
la source
1
Ceci est la bonne réponse OU vous pouvez sélectionner l'emplacement correct du gradle
pointeur vide
1
comment sa réponse est différente de celle de @ Peter.
AndyW
13

Si aucune des options ci-dessus ne fonctionne, procédez comme suit

  1. Changez le projet en Projectperspective dans l '"Explorateur de projets".
  2. Supprimer .gradleet builddossiers.
  3. Cliquez sur Fichier -> Invalider les caches / redémarrer ... -> Invalider et redémarrer
  4. Maintenant, son codage fonctionne, heureux.
Atif Farrukh
la source
7

J'ai réussi à résoudre mon problème en faisant simplement ceci: Cliquez sur "Fichier" puis sélectionnez "Invalider les caches / redémarrer"

Fred
la source
6

Le moyen le plus simple de résoudre ce problème Gradle consiste à recréer le projet pour permettre à Android Studio de reconfigurer Gradle.

Sélectionnez simplement «Ouvrir un projet Android Studio existant» et choisissez votre dossier de projet.

Plus de détails ici .

AleFranz
la source
4

cela a fonctionné pour moi:

buildTypes.debug {
    ext.enableCrashlytics = false
}

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

Le problème se présente lorsque vous importez un projet dans votre environnement et que le plug-in Gradle est installé à un emplacement différent de ce qu'il était dans l'original. Il vous suffit de préciser où se trouve votre installation Gradle.

Déplacer buildTypes ou defaultConfig ou quoi que ce soit entre eux n'est pas une solution complète

Chisko
la source
Voici comment j'ai finalement résolu ce problème ... 1. Accédez dans Android Studio à: Fichier | Paramètres | Fichier | Paramètres | Construction, exécution, déploiement | Outils de construction | Gradle 2. Assurez-vous que cette case n'est pas cochée, bien qu'il soit recommandé de conserver ... Utilisez le Gradle Wrapper par défaut (recommandé) 3. et que celui-ci est coché ... Utilisez la distribution locale de Gradle 4. et que Gradle Home est réglé sur cela, avec éventuellement un gradle-nn plus tard ... C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4 Vous devrez peut-être redémarrer Android Studio, reconstruire le projet, etc. mais le problème est résolu.
Mick
3

Le problème à résoudre est que vos paramètres Android Studio que vous avez probablement importés lors de la mise à niveau pointaient toujours vers Gradle-2.4 ou d'autres versions que ce que prévoit Android Studio 1.5.

Pour résoudre ce problème, vous devez ouvrir les paramètres et aller à Build, Execution, Deployment> Build Tools> Gradle et modifier le chemin de départ de votre distribution locale de Gradle ou sélectionner le wrapper de Gradle par défaut.

Appliquez et resynchronisez votre projet.

anthonymonori
la source
2

J'ai eu le même problème. J'ai commencé un nouveau projet et cela a fonctionné, donc je viens de copier le fichier build.gradle. Dans mon cas, la seule différence était l'absence de la section compileOptions. Je l'ai supprimé de mon projet, synchronisé Gradle, réinséré la section compileOptions, puis synchronisé Gradle à nouveau.

greywolf82
la source
2

Dans votre Android Studio, allez dans Fichier -> Paramètres. Ensuite, choisissez Build, Execution, Deployment -> Build Tools -> Gradle et sélectionnez "Use default gradle wrapper (recommended)".

Projet de reconstruction.


la source
2

Dans mon cas, ma buildTypessection était au-dessus de ma productFlavorssection. L'échange de leurs positions s'est débarrassé de l'avertissement:

AVANT:

buildTypes {

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

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

APRÈS:

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

 buildTypes {

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

J'utilise Android Studio 2.1.2 avec la configuration suivante en haut de ma androidsection:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

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

J'avais l'habitude d'avoir cet avertissement, après avoir mis à jour Android Studio.

Lorsque je suis allé dans Paramètres >> Outils de construction >> Gradle, j'ai trouvé que le chemin local de Gradle n'était pas valide, car la version de Gradle a également été mise à jour de 2.6 à 2.8.

Correction du nouveau chemin et resynchronisation gradle a supprimé l'avertissement.

Une autre façon est d'utiliser gradlewrapper.

IronBlossom
la source
0

Changer distributionUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip en gradle-2.1-all.zip dans gradle-wrapper.properties a résolu le problème pour moi.

kengura
la source
0

EDIT: C'est ainsi que j'ai finalement résolu ce problème ...

  1. Naviguez dans Android Studio pour:

    Fichier | Paramètres | Construction, exécution, déploiement | Outils de construction | Gradle

  2. Assurez-vous que cette case n'est pas cochée, bien qu'il soit recommandé de conserver ...

    Utiliser le Gradle Wrapper par défaut (recommandé)

  3. et que celui-ci est vérifié ...

    Utiliser la distribution locale des grades

  4. et que Gradle Home est réglé sur cela, avec peut-être un gradle-nn plus tard ...

    C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4

Vous devrez peut-être redémarrer Android Studio, reconstruire le projet, etc. mais le problème est résolu.

Fin d'EDIT.

Je poste ceci pour conseiller à toute autre personne nouvelle à ce problème de l'ignorer. Le projet fonctionne parfaitement malgré tout. Il s'agit tout simplement d'un bogue dans le système de construction, qui devrait être corrigé bientôt. J'ai posté un commentaire et voté ici où c'est encore un sujet actif ...

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

Après avoir essayé, sans succès, les suggestions dans les trois fils suivants, j'ai refait tout le projet à partir de zéro. J'ai commencé un nouveau projet Android Studio, copié toutes les bibliothèques originales et les fichiers principaux dans celui-ci en ignorant tous les fichiers générés par le système de construction et reconstruit le projet. Tout allait bien sauf tous ceux "ne peuvent pas être appliqués à" (groovy.lang.Closure) "" les avertissements sont réapparus avec vengeance. Ensuite, je suis passé par ces suggestions à nouveau juste pour être certain que je n'avais pas oublié quelque chose.

1 buildTypes ne peut pas être appliqué à groovy.lang.Closure allez dans les paramètres dans Android Studio et sélectionnez "Utiliser le wrapper gradle": Dans Android Studio, sélectionnez: Fichier \ Paramètres \ Construction, Exécution, Déploiement \ Outils de construction \ Marque de gradle: Utilisez le gradle par défaut wrapper (par défaut) Ceci a supprimé tous les avertissements «ne peut pas être appliqué à» (groovy.lang.Closure ») dans les fichiers de construction.

2 'dépendances' ne peuvent pas être appliquées à '(groovy.lang.Closure)' Ouvrez et modifiez le fichier: yourproject / gradle / wrapper / gradle-wrapper.propertie. Modifiez le contenu comme l'image ci-dessous puis enregistrez. Supprimez ce dossier: yourproject / .gradle. Cliquez sur Synchroniser le projet avec les fichiers Gradle, alors vous êtes prêt à partir.

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

Ma configuration est: Android Studio 1.3, compileSdk version 22, buildTools version "22.0.1"

Mick
la source
0

supprimer le dossier gradle sous le dossier de l'application et resynchroniser le projet

Alex Perevozchykov
la source
0

Tout ce que j'avais à faire pour supprimer

productFlavors {
}

De

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

et l'avertissement a disparu.

Le look final était comme ça

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

Changer buildToolsVersionde

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

à

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

travaillé pour moi.

Gergana Tsvetkova
la source