'Abhängigkeiten' können nicht auf '(groovy.lang.Closure)' angewendet werden.


121

Ich kann diesen Fehler nicht beheben:

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

Dies ist meine Gradle-Datei:

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

1
Ich bin mir ziemlich sicher, dass diese sehr eng miteinander verbunden sind, und wie meine Antwort dort nahe legt, denke ich, dass die Fehlermarkierung ein Fehler ist, daher die Ungleichheit der Lösungen. stackoverflow.com/questions/29133601/… Das heißt nicht, dass die Top-Antwort hier keine sehr gültigen allgemeinen Punkte zu Ihrem "aktuellen" Gradle-Buildscript enthält
Seb Andraos,

Antworten:


22

Basierend auf dem, was Android Studio generiert, benötigen Sie eine Projektdatei der obersten Ebene build.gradleund eine weitere für Ihre App build.gradle.

Höchststufe:

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

Anwendungsebene:

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

Aber auch ohne all das ist Ihr Problem, dass Sie eine dependenciesin Ihrer androidPlugin-Konfiguration haben.

android {
    dependencies {
    }
}

Entferne diesen leeren dependenciesBlock.

BEARBEITEN: Ich habe diesen Fehler auch mit dem neuesten Android Studio bekommen. Ich musste lediglich eine neuere Version des Gradle-Plugins hinzufügen und 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()
    }
}

11
Ich habe das immer noch das gleiche Problem gemacht :(
Ashwani Kottapalli

Um ehrlich zu sein, sollten Sie die zusätzlichen Anführungszeichen und Leerzeichen in Ihren Abhängigkeiten von Crouton, Universal-Image-Loader und googleplayServices korrigieren. Sie sollten laut developer.android.com/google/play-services/setup.html
EpicPandaForce am

es funktioniert nicht ... kannst du mir einen fb id oder einen anderen geben ... damit wir trainieren können? Bitte?
Ashwani Kottapalli

... in diesem Fall weiß ich nicht, was Ihr Fehler ist. :( Das letzte Mal, als mir das passiert ist, waren mein Android- und Gradle-Plugin veraltet und ich habe einen Konfigurationstyp verwendet, der nicht mehr existiert
EpicPandaForce

1
Hängt davon ab, ob Sie die Befehlszeile oder die IDE verwenden. Und wenn IDE, welche IDE?
EpicPandaForce

247

Sie können zu den Einstellungen gehen und "Standard-Gradle-Wrapper verwenden" auswählen und dann das Projekt neu erstellen. Es hat gut funktioniert für mich: Geben Sie hier die Bildbeschreibung ein


4
Hat jemand eine Erklärung, warum dies passiert?
Rennen

1
Nach dem Update von 1.4 auf 1.5 wurde diese Einstellung anscheinend "zurückgesetzt", um stattdessen die lokale Verteilung auf meinem Computer zu verwenden. Diese Antwort hat das Problem definitiv gelöst.
scheinbar amüsant

3
Ab der Version 143.2532994 scheint dieses Problem wieder aufzutreten ... jemand gleich mit mir ...? So nervig ..
Arst

Obwohl die ausgewählte Antwort sehr ausführlich und ehrlich ist, gibt es einen Grund, warum diese Antwort um Größenordnungen mehr positive Stimmen hat
Pavel Zdenek

Oh ja, es gibt einen Grund - Mac-Benutzer. Unter Windows ist die Seite anders. "Nichts zu zeigen". Die markierte Antwort ist zumindest irgendwie nützlich.
Gangnus

37

Gehe zu

Windows

Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Gradle

Mac

Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Gradle

und wählen Sie Standard-Gradle-Wrapper verwenden


1
Windows. Nichts zu wählen.
Gangnus

2
Zuerst müssen Sie das Projekt öffnen.
Raptor

Und unter Linux ist es dasselbe wie unter Windows: Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> Gradle. Sie können Ihre Antwort bearbeiten und "Windows / Linux" schreiben.
Lenooh

18

Mein Problem ist, dass die gesamte Datei build.setting mit cannot be applied to '(groovy.lang.Closure)'Warnmeldungen belegt war, anstatt für eine bestimmte Variable.

Ich habe alle von anderen angebotenen Lösungen ausprobiert, aber keine davon funktioniert für mich. Am Ende habe ich diese Schritte gemacht, dann funktioniert es wie ein Zauber. Wenn Sie auf dasselbe Problem stoßen, probieren Sie es aus.

  1. Datei öffnen und bearbeiten : yourproject/gradle/wrapper/gradle-wrapper.properties. Bearbeiten Sie den Inhalt, um die Gradle-Verteilungsversion wie in der Abbildung unten gezeigt zu aktualisieren, und speichern Sie sie.
  2. Löschen Sie diesen Ordner : yourproject/.gradle.
  3. Klicken Sie Sync project with gradle files, dann können Sie loslegen.

Geben Sie hier die Bildbeschreibung ein


1
Das Verzeichnis yourproject / .gradle muss nicht gelöscht werden. Wenn Sie sich dazu entscheiden, müssen Sie alle dort vorgenommenen Anpassungen speichern, z. B. das Hinzufügen einer gradle.properties-Datei mit org.gradle.daemon = true (eine häufige Optimierung). Sie können jedoch einfach neu erstellen, und der Gradle-Wrapper lädt neben den älteren Versionen die in der DistributionUrl angegebene neue Version herunter. Es ist in Ordnung, wenn ältere Versionsverzeichnisse im Gradle-Verzeichnis Ihres Projekts verbleiben.
Mark McClelland

Das Aktualisieren der Gradle-Version in hat gradle-wrapper.propertiesmein Problem gelöst. Vielen Dank!
BVB

18

Wenn Sie bereits den "Standard-Gradle-Wrapper" verwenden und dies nicht hilft:

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

Wenn es auch nicht hilft, versuchen Sie es in 2 Schritten:

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

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

Nach dem Neustart sollte die Warnung verschwinden.

(Für mich hat es funktioniert und für Android Studio und für IntelliJ Idea)


Hat für mich gearbeitet. Das einzige, was Sie beachten müssen, ist: Wenn Sie Ihren eigenen Gradle anstelle des gebündelten verwenden, müssen Sie ihn auch .gradlein Ihrem Home-Verzeichnis löschen .

1
Nur die 2) Anweisung zu machen, hat bei mir funktioniert. Vielen Dank!!
Manolodewiner

2
arbeitete ... für 5 Sekunden. dann habe ich diesen Fehler wieder bekommen.
Yar

Es ist ein bisschen frustrierend, wie schlecht IntelliJ in letzter Zeit mit dem richtigen Parsen von Projekten geworden ist. Früher war dies seine Stärke ... jetzt fühlt es sich an, als würde es im geringsten stolpern.
smaudet

4

Ich ging in die Einstellungen, um eine der anderen Antworten zu versuchen, als ich eine Warnung bemerkte, dass mein gradleHome-Verzeichnis falsch war. Also öffnete ich den Dateibrowser und wählte die neuere gradleVersion, und alle Fehler gingen weg. Bild unten gezeigt.

Geben Sie hier die Bildbeschreibung ein


1

Ich wette, das Problem hat nichts mit dem Code zu tun, der Sie warnt. Höchstwahrscheinlich handelt es sich um Ihre Proguard-Datei. Ich hatte folgendes in meinem Code und bekam die gleiche Warnung:

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

Durch das Auskommentieren verschwinden runProguard falsealle meine Probleme, geh Figur :)


Daniel Wilson hilft es , wenn Sie ändern , runProguardum minifyEnabledstattdessen? Weitere Informationen finden Sie hier
Sergii N.

1

Ich habe das gleiche Problem in Android Studio 2.2 , es funktioniert für mich:

Original:

android {
...
}

dependencies {
...
}

bewegen dependenciesin android:

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

1

Ich habe das Problem in Android Studio gelöst, indem ich den Cache ungültig gemacht und neu gestartet habe.

File-> Invalidate Caches / Restart..

Geben Sie hier die Bildbeschreibung ein


1

Ich bin in IntelliJ für ein Kotlin-Projekt auf ein ähnliches Problem gestoßen. Es sieht so aus, als ob das Problem darin bestand, dass in meinem Projekt, obwohl JDK 8 verwendet wurde, die Sprach- und API-Versionen irgendwie auf 1.3 gesetzt wurden. Siehe Projekteinstellungen> Facetten. In meinem Fall habe ich "Projekteinstellungen verwenden" angekreuzt, aber die manuelle Einstellung pro Facette kann auch funktionieren.


0
  1. Schließen Sie das Projekt (Datei / Projekt schließen),
  2. Wählen Sie im Startmenü „Vorhandenes Android Studio-Projekt öffnen“ und wählen Sie den Ordner aus, der Ihr Android-Projekt enthält.

Diese Arbeit für mich.


0

Gradle-Dateien können an mehreren Stellen explizit angegeben werden, um solche Fehler zu vermeiden. ZB ändern

configurations {

zu

project.configurations {

oder

task {
    description 'foo'

zu

task {
    setDescription 'foo'

0

Um das Problem zu beheben, schließen Sie einfach das Projekt, wählen Sie im Startmenü "Vorhandenes Android Studio-Projekt öffnen" und wählen Sie den Ordner aus, der Ihr Android-Projekt enthält. Beachten Sie, dass Sie den Ordner und nicht die IML-Projektdatei auswählen .


0

Schneiden Sie die "buildTypes" aus und fügen Sie sie an derselben Stelle im Abschnitt "android" und im Projekt "Neu synchronisieren (aktualisieren)" ein


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.