'dépendances' ne peuvent pas être appliquées à '(groovy.lang.Closure)'

121

Je ne parviens pas à corriger cette erreur:

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

Ceci est mon fichier 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
la source
1
Je suis à peu près sûr que ceux-ci sont très liés et comme ma réponse le suggère, je pense que le marquage d'erreur est un bogue, d'où la disparité des solutions. stackoverflow.com/questions/29133601/ ... Cela ne veut pas dire que la réponse principale ici ne fait pas quelques points généraux très valables sur votre buildscript "actuel" gradle
Seb Andraos

Réponses:

22

En fonction de ce que génère Android Studio, vous devez disposer d'un fichier de projet de niveau supérieur build.gradleet d'un autre pour votre application build.gradle.

Haut niveau:

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

Niveau d'application:

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

Mais même sans tout cela, votre problème est que vous avez une configuration dependenciesdans votre androidplugin.

android {
    dependencies {
    }
}

supprimez ce dependenciesbloc vide .

EDIT: J'ai également commencé à recevoir cette erreur avec le dernier Android Studio, tout ce que j'avais à faire était d'ajouter une version plus récente du plugin Gradle et de 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()
    }
}
EpicPandaForce
la source
11
J'ai fait le même problème :(
Ashwani Kottapalli
pour être honnête, je pense que vous devriez corriger les guillemets supplémentaires et les espaces dans vos dépendances Crouton, Universal-Image-Loader et googleplayServices. Vous ne devriez également utiliser qu'une partie des services Google Play, également selon developer.android.com/google/play-services/setup.html
EpicPandaForce
ça ne marche pas ... pouvez-vous me donner fb id ou autre ... pour que nous puissions faire de l'exercice? S'il vous plaît?
Ashwani Kottapalli
... dans ce cas, je ne sais pas quel est votre bug. :( la dernière fois que cela m'est arrivé, mon plugin android et gradle étaient obsolètes, et j'utilisais un type de configuration qui n'existait plus
EpicPandaForce
1
Dépend de si vous utilisez la ligne de commande ou l'IDE. Et si IDE, alors quel IDE.
EpicPandaForce
247

Vous pouvez aller dans Préférences et sélectionner "utiliser le wrapper de gradle par défaut" puis reconstruire le projet. Ça a bien marché pour moi: entrez la description de l'image ici

codage
la source
4
Quelqu'un a-t-il une explication pourquoi cela se produit?
course du
1
Il semble qu'après avoir mis à jour de 1.4 à 1.5, ce paramètre a été "réinitialisé" pour utiliser la distribution locale à la place sur ma machine. Cette réponse a définitivement résolu le problème.
semblant.amus du
3
À partir de la version 143.2532994, ce problème semble se reproduire ... n'importe qui est pareil avec moi ...? Tellement ennuyeux ..
Arst
Bien que la réponse choisie soit très élaborée et honnête, il y a une raison pour laquelle cette réponse a un ordre de grandeur plus de votes positifs
Pavel Zdenek
Oh, oui, il y a une raison - les utilisateurs de mac. Sous Windows, la page est différente. "Rien à montrer". La réponse marquée est au moins en quelque sorte utile.
Gangnus
37

Aller à

les fenêtres

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

Mac

Préférence -> Build, Execution, Deployment -> Build Tools -> Gradle

et sélectionnez Use default gradle wrapper

Mark Pazon
la source
1
Les fenêtres. Rien à sélectionner.
Gangnus
2
Vous devez d'abord ouvrir le projet.
Raptor
Et sous Linux, c'est la même chose que sous Windows: Fichier -> Paramètres -> Construction, exécution, déploiement -> Outils de construction -> Gradle. Vous pouvez modifier votre réponse et écrire "Windows / Linux".
lenooh
18

Mon problème est que tout le fichier build.setting était occupé par cannot be applied to '(groovy.lang.Closure)'des messages d'avertissement au lieu de se produire sur une variable particulière.

J'ai essayé toutes les solutions proposées par d'autres mais aucune d'entre elles ne fonctionne pour moi. J'ai fini par faire ces étapes puis cela fonctionne comme un charme. Si vous rencontrez le même problème, essayez-le.

  1. Ouvrir le fichier et modifier: yourproject/gradle/wrapper/gradle-wrapper.properties. Modifiez le contenu pour mettre à jour la version de distribution de Gradle comme indiqué dans l'image ci-dessous, puis enregistrez.
  2. Supprimer ce dossier: yourproject/.gradle.
  3. Cliquez Sync project with gradle files, alors vous êtes prêt à partir.

entrez la description de l'image ici

Arst
la source
1
Il n'est pas nécessaire de supprimer le répertoire yourproject / .gradle. Si vous choisissez de le faire, assurez-vous d'enregistrer toutes les personnalisations que vous y avez apportées, telles que l'ajout d'un fichier gradle.properties avec org.gradle.daemon = true (une optimisation courante). Cependant, vous pouvez simplement reconstruire et l'encapsuleur gradle téléchargera la nouvelle version spécifiée dans distributionUrl, avec les anciennes versions. Il est normal que les répertoires de versions plus anciennes restent dans le répertoire gradle de votre projet.
Mark McClelland
La mise à jour de la version gradle a gradle-wrapper.propertiesrésolu mon problème. Merci!
BVB
18

Si vous utilisez déjà le "wrapper de gradle par défaut" et que cela n'aide pas:

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

Si cela ne vous aide pas non plus, essayez en 2 étapes:

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

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

Après le redémarrage, l'avertissement devrait disparaître.

(Pour moi, cela a fonctionné et pour Android Studio et pour IntelliJ Idea)

Andreï
la source
A travaillé pour moi. La seule chose à noter est: si vous utilisez votre propre gradle au lieu de celui fourni, vous devez également supprimer .gradledans votre répertoire personnel.
1
Faire juste les 2) instructions a fonctionné pour moi. Merci!!
manolodewiner
2
travaillé ... pendant 5 secondes. puis j'ai de nouveau cette erreur.
Yar
C'est un peu frustrant de voir à quel point IntelliJ est devenu récent avec l'analyse correcte des projets. C'était son point fort ... maintenant, on a l'impression de trébucher à la moindre chose.
smaudet
4

Je suis entré dans les préférences pour essayer l'une des autres réponses lorsque j'ai remarqué un avertissement indiquant que mon gradlerépertoire personnel était incorrect. J'ai donc ouvert le navigateur de fichiers et choisi la gradleversion la plus récente, et toutes les erreurs ont disparu. Image montrée ci-dessous.

entrez la description de l'image ici

grêlé
la source
1

Je parie que le problème n'a aucun rapport avec le morceau de code qui vous donne des avertissements, il s'agit probablement de votre fichier proguard. J'ai eu ce qui suit dans mon code et j'ai reçu le même avertissement:

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

En commentant runProguard false, tous mes problèmes disparaissent, allez comprendre :)

Daniel Wilson
la source
Daniel Wilson est-ce que cela vous aide si vous passez runProguardà la minifyEnabledplace? Plus d'informations sont fournies ici
Sergii
1

J'ai le même problème dans Android Studio 2.2, cela fonctionne pour moi:

original:

android {
...
}

dependencies {
...
}

déplacer dependenciesdans android:

android {
...
   dependencies {
   ...
   }
}
Yakami
la source
1

J'ai résolu le problème dans Android Studio en désactivant le cache et en redémarrant.

File-> Invalidate Caches / Restart..

entrez la description de l'image ici

ahmadalibaloch
la source
1

J'ai rencontré un problème similaire à celui-ci dans IntelliJ pour un projet Kotlin. Il semble que le problème était que dans mon projet, même s'il était configuré pour utiliser JDK 8, la langue et les versions de l'API ont été définies sur 1.3. Voir Préférences du projet> Facettes. Dans mon cas, j'ai coché «utiliser les paramètres du projet», mais les définir manuellement par facette peut également fonctionner.

Tim Keating
la source
0
  1. Fermer le projet (Fichier / Fermer le projet),
  2. Sélectionnez «Ouvrir un projet Android Studio existant» dans le menu Démarrer et sélectionnez le dossier contenant votre projet Android.

Ce travail pour moi.

zerob13
la source
0

Les fichiers Gradle peuvent être rendus explicites à plusieurs endroits pour éviter de telles erreurs. Par exemple, changer

configurations {

à

project.configurations {

ou

task {
    description 'foo'

à

task {
    setDescription 'foo'
tkruse
la source
0

Pour résoudre le problème, fermez simplement le projet, puis sélectionnez «Ouvrir un projet Android Studio existant» dans le menu Démarrer et sélectionnez le dossier contenant votre projet Android. Attention, sélectionnez le dossier , pas le fichier de projet .iml.

Webdma
la source
0

Coupez et collez les "buildTypes" au même endroit dans la section "Android" et Re-Sync (refresh) Project

Andreï
la source