"dipendenze" non può essere applicato a "(groovy.lang.Closure)"


121

Non riesco a correggere questo errore:

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

Questo è il mio file 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
    }
 }

1
Sono abbastanza sicuro che siano molto correlati e come suggerisce la mia risposta laggiù, penso che il contrassegno di errore sia un bug da cui la disparità delle soluzioni. stackoverflow.com/questions/29133601/… Questo non vuol dire che la risposta migliore qui non faccia alcuni punti generali molto validi sul tuo buildscript "attuale" gradle
Seb Andraos

Risposte:


22

In base a ciò che viene generato da Android Studio, devi avere un file di progetto di primo livello build.gradlee un altro per la tua app build.gradle.

Di livello superiore:

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

Livello di applicazione:

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

Ma anche senza tutto ciò, il tuo problema è che hai un file dependenciesdi androidconfigurazione all'interno del tuo plugin.

android {
    dependencies {
    }
}

rimuovere quel dependenciesblocco vuoto .

EDIT: Ho anche iniziato a ricevere questo errore con l'ultimo Android Studio, tutto quello che dovevo fare era aggiungere una versione più recente del plugin Gradle e compilareSdkVersion 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
Ho fatto lo stesso problema :(
Ashwani Kottapalli

ad essere onesti, penso che dovresti correggere le virgolette extra e gli spazi nelle dipendenze di Crouton, Universal-Image-Loader e googleplayServices. Secondo developer.android.com/google/play-services/setup.html,
EpicPandaForce

non funziona ... puoi darmi id fb o altro ... così possiamo allenarci? per favore?
Ashwani Kottapalli

... in tal caso, non so quale sia il tuo bug. :( l'ultima volta che è successo a me, i miei plugin Android e Gradle erano obsoleti e stavo usando un tipo di configurazione che non esisteva più
EpicPandaForce

1
Dipende dall'utilizzo della riga di comando o dell'IDE. E se IDE, allora quale IDE.
EpicPandaForce

247

Puoi andare su Preferenze e selezionare "usa wrapper gradle predefinito", quindi ricostruire il progetto. Ha funzionato bene nel mio caso: inserisci qui la descrizione dell'immagine


4
Qualcuno ha una spiegazione del perché questo accade?
gare il

1
Sembra che dopo aver aggiornato da 1.4 a 1.5, questa impostazione sia stata "ripristinata" per utilizzare la distribuzione locale invece sulla mia macchina. Questa risposta ha definitivamente risolto il problema.
apparentemente divertente

3
A partire dalla versione 143.2532994 questo problema sembra ripetersi ... qualcuno lo stesso con me ...? Così fastidioso ..
Arst

Nonostante la risposta selezionata sia molto elaborata e onesta, c'è un motivo per cui questa risposta ha più voti positivi in ​​ordine di grandezza
Pavel Zdenek,

Oh, sì, c'è un motivo: utenti Mac. Su Windows, la pagina è diversa. "Niente da mostrare". La risposta contrassegnata è almeno in qualche modo utile.
Gangnus

37

Vai a

finestre

File -> Impostazioni -> Build, Execution, Deployment -> Build Tools -> Gradle

Mac

Preferenza -> Build, Execution, Deployment -> Build Tools -> Gradle

e seleziona Usa wrapper gradle predefinito


1
Finestre. Niente da selezionare.
Gangnus

2
Per prima cosa devi prima aprire il progetto.
Raptor

E su Linux è lo stesso di Windows: File -> Impostazioni -> Build, Execution, Deployment -> Build Tools -> Gradle. Puoi modificare la tua risposta e scrivere "Windows / Linux".
Lenooh

18

Il mio problema è che l'intero file build.setting era occupato da cannot be applied to '(groovy.lang.Closure)'messaggi di avviso invece di accadere su una particolare variabile.

Ho provato tutte le soluzioni fornite da altri ma nessuna di esse funziona per me. Ho finito di fare questi passaggi, quindi funziona a meraviglia. Se riscontri lo stesso problema, provalo.

  1. Aprire e modificare il file: yourproject/gradle/wrapper/gradle-wrapper.properties. Modifica il contenuto per aggiornare la versione di distribuzione gradle come mostrato nell'immagine sottostante, quindi salva.
  2. Eliminare questa cartella: yourproject/.gradle.
  3. Fare clic su Sync project with gradle files, quindi sei a posto.

inserisci qui la descrizione dell'immagine


1
Non è necessario eliminare la directory yourproject / .gradle. Se scegli di farlo, assicurati di salvare tutte le personalizzazioni apportate lì, come l'aggiunta di un file gradle.properties con org.gradle.daemon = true (un'ottimizzazione comune). Tuttavia, puoi semplicemente ricostruire e il wrapper gradle scaricherà la nuova versione specificata in distributionUrl, insieme alle versioni precedenti. Va bene che le directory delle versioni precedenti rimangano nella directory gradle del progetto.
Mark McClelland

L'aggiornamento della versione gradle ha gradle-wrapper.propertiesrisolto il mio problema. Grazie!
BVB

18

Se stai già utilizzando il "wrapper gradle predefinito" e non aiuta:

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

Se anche non aiuta, prova in 2 passaggi:

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

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

Dopo il riavvio l'avviso dovrebbe scomparire.

(Per me ha funzionato e per Android Studio e per IntelliJ Idea)


Ha funzionato per me. L'unica cosa da notare è: se stai usando il tuo gradle invece di quello in bundle, devi eliminare anche .gradlenella tua directory home.

1
Solo facendo le 2) istruzioni ha funzionato per me. Grazie!!
manolodewiner

2
ha funzionato ... per 5 secondi. poi ho ricevuto di nuovo quell'errore.
Yar

È un po 'frustrante quanto sia diventato cattivo IntelliJ di recente con l'analisi corretta dei progetti. Questo era il suo forte ... ora sembra che inciampi alla minima cosa.
smaudet

4

Sono entrato nelle preferenze per provare una delle altre risposte quando ho notato un avvertimento che la mia gradledirectory home era sbagliata. Quindi ho aperto il browser di file e ho scelto la gradleversione più recente e tutti gli errori sono scomparsi. Immagine mostrata di seguito.

inserisci qui la descrizione dell'immagine


1

Scommetto che il problema non è totalmente correlato al pezzo di codice che ti sta dando gli avvertimenti, molto probabilmente è il tuo file proguard. Avevo quanto segue nel mio codice e ho ricevuto lo stesso avviso:

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

Commentando runProguard false, tutti i miei problemi scompaiono, vai a capire :)


Daniel Wilson ti aiuta se cambi runProguardin minifyEnabledinvece? Maggiori informazioni sono fornite qui
Sergii N.

1

Ho lo stesso problema in Android Studio 2.2 , funziona per me:

originale:

android {
...
}

dependencies {
...
}

trasferirsi dependenciesin android:

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

1

Ho risolto il problema in Android Studio invalidando la cache e riavviando.

File-> Invalidate Caches / Restart..

inserisci qui la descrizione dell'immagine


1

Ho riscontrato un problema simile a questo in IntelliJ per un progetto Kotlin. Sembra che il problema fosse che nel mio progetto, anche se era impostato per utilizzare JDK 8, la lingua e le versioni API in qualche modo sono state impostate su 1.3. Vedi Preferenze del progetto> Sfaccettature. Nel mio caso, ho spuntato "usa le impostazioni del progetto", ma potrebbe funzionare anche impostarle manualmente per sfaccettatura.


0
  1. Chiudi il progetto (File / Chiudi progetto),
  2. Seleziona "Apri un progetto Android Studio esistente" nel menu di avvio e seleziona la cartella che contiene il tuo progetto Android.

Questo lavoro per me.


0

I file Gradle possono essere resi espliciti in diversi punti per evitare tali errori. Ad esempio, Cambia

configurations {

per

project.configurations {

o

task {
    description 'foo'

per

task {
    setDescription 'foo'

0

Per risolvere il problema è sufficiente chiudere il progetto, quindi selezionare "Apri un progetto Android Studio esistente" nel menu di avvio e selezionare la cartella che contiene il progetto Android. Attenzione, seleziona la cartella , non il file di progetto .iml.


0

Taglia e incolla "buildTypes" nello stesso punto nella sezione "android" e Re-Sync (refresh) Project


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.