buildTypes non può essere applicato a groovy.lang.Closure


241

Ricevo questo avviso nel mio file di valutazione del progetto:

Avviso: (16, 5) 'buildTypes' non può essere applicato a '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)'

La mia sezione buildTypes è:

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

Attualmente sto usando Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 e targetSdkVersion 22. Ho provato a fare il backup su 21 ma continuavo a ricevere l'avviso.

Cosa causa questo avviso e come viene risolto?


Hai applicato plugin: 'com.android.aplication' o 'com.android.library'?
Kirill Boyarshinov,

@Kirill: com.android.application
Jim Vitek,

Risposte:


471

Per me il problema non è stato risolto applicando la soluzione di cui sopra. Invece ho dovuto andare alle impostazioni in Android Studio e selezionare "Usa wrapper gradle":

In Android Studio selezionare: File \ Impostazioni \ Build, Execution, Deployment \ Build tools \ Gradle

(Utenti Mac: Android Studio \ Preferenze ... \ Build, Execution, Deployment \ Build tools \ Gradle )

Segna: Usa wrapper gradle predefinito (impostazione predefinita)

Ciò ha rimosso tutti gli avvisi 'non applicabile a' (groovy.lang.Closure ') nei file di build.


2
Questa è la risposta corretta, il problema si è verificato quando ho aperto il progetto su Windows e poi su Linux (tramite Dropbox) cambia la posizione della distribuzione gradle, quindi è meglio usare il wrapper gradle predefinito.
Rodrigo Direito,

1
Ho avuto lo stesso problema. Il mio compagno di squadra lavora su una macchina Windows. Il recupero degli aggiornamenti mi sta dando questo problema
chip

@Waterbear Ho modificato la risposta originale per questo (ho cercato un po 'anche per questo: D). Dopo una revisione tra pari sarà disponibile :) Vedi: i.imgur.com/BtCijIW.png
StefMa

In qualche modo 1.3.1 AS su Mac ripristinare questa impostazione su Build -> Clean. Impostarlo indietro risolve build. Grazie!
Den Drobiazko,

11
Qualcosa di stupido con Android Studio, ha iniziato a mostrarmi un avviso quando ho creato build target 22 e buildToolsVersion 22.0.1 .... Per me 'Usa wrapper gradle predefinito' era già contrassegnato come predefinito (AS 2.0 Beta) ... tagliare il mio blocco di codice e incollarlo nello stesso posto (nessuna modifica del codice, nessuna modifica della configurazione) .... l'avviso è stato rimosso!
Umair,

127

Ho avuto lo stesso problema. Spostare buildTypes come l'ultima voce nella sezione Android ha funzionato per me.

android {
    ...
    buildTypes {
    }
}

2
Strano che la sua posizione dovrebbe fare la differenza, ma a quanto pare lo fa.
Jason Crosby il

Questo funziona anche per me. Hai qualche idea su come funzioni? Grazie.
myNameCoad il

4
Questo sembrava funzionare anche per me, ma poi ho annullato quei cambiamenti e ho copiato / incollato quel blocco nello stesso posto e anche l'avvertimento è andato via. Quindi ho provato a annullare tutto, chiudere e riaprire il progetto per replicare l'avviso, ma non c'era più. Penso che sia solo uno di quei tipi di avvertimenti.
elliptic1

Per me, quasi gli avvertimenti sono stati cancellati dalla risposta di Peter, ad eccezione di un avvertimento in merito buildTypes. Quindi, questa soluzione ha funzionato per l'ultima!
hata,

76

1 Taglia e incolla i "buildTypes" nella stessa posizione nella sezione "android"

2 Re Sync Project


16

Per risolvere questo problema, nel tuo Android Studio vai su File -> Impostazioni . Nelle impostazioni, seleziona Crea, Esecuzione, Distribuzione -> Strumenti di costruzione -> Grado e seleziona l' opzione "Usa wrapper gradle predefinito (consigliato)" .

Dopo aver ricostruito il tuo build.gradle andrà benissimo.


1
Questa è la risposta corretta OPPURE è possibile selezionare la posizione corretta del grado
annullare il puntatore

1
come è diverso dalla risposta di @ Peter.
AndyW,

13

Se nessuna delle opzioni precedenti funziona, procedi come segue

  1. Modificare il progetto in Projectprospettiva in "Esplora progetti".
  2. Elimina .gradlee buildcartelle.
  3. Fare clic su File -> Cache non valide / Riavvia ... -> Non valide e Riavvia
  4. Ora funziona, codifica felice.

7

Sono riuscito a risolvere il mio problema semplicemente facendo questo: Fai clic su "File", quindi seleziona "Cache / Riavvio non valide


6

Il modo più semplice per risolvere questi problemi di Gradle è ricreare il progetto per consentire a Android Studio di riconfigurare Gradle.

Seleziona "Apri un progetto Android Studio esistente" e scegli la cartella del tuo progetto.

Maggiori dettagli qui .


4

questo ha funzionato per me:

buildTypes.debug {
    ext.enableCrashlytics = false
}

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

4

Il problema si presenta quando si importa un progetto nel proprio ambiente e il plug-in Gradle viene installato in una posizione diversa rispetto a quella originale. Devi solo indicare dove si trova l'installazione Gradle.

Spostare buildTypes o defaultConfig o qualsiasi altra cosa tra loro non è una soluzione completa


Ecco come ho finalmente risolto questo problema ... 1. Navigare in Android Studio su: File | Impostazioni | File | Impostazioni | Build, Execution, Deployment | Strumenti di costruzione | Grado 2. Assicurati che sia deselezionato, nonostante sia raccomandato di mantenere ... Usa Default Gradle Wrapper (raccomandato) 3. e che questo sia selezionato ... Usa la distribuzione locale dei gradi 4. e che Gradle Home sia impostato su questo, eventualmente con un successivo gradle-nn ... C: / Programmi / Android / Android Studio1 / gradle / gradle-2.4 Potrebbe essere necessario riavviare Android Studio, ricostruire il progetto, ecc., ma il problema è risolto.
Mick,

3

Il problema a portata di mano è che le impostazioni di Android Studio che probabilmente hai importato durante l'aggiornamento, puntavano ancora alla versione 2.4 o ad altre versioni di quelle previste da Android Studio 1.5.

Per risolvere questo problema, è necessario aprire Impostazioni e selezionare Build, Execution, Deployment> Build Tools> Gradle e modificare il percorso principale della distribuzione di gradle locale o selezionare il wrapper di gradle predefinito.

Applica e risincronizza il tuo progetto.


2

Ho avuto lo stesso problema. Ho iniziato un nuovo progetto e ha funzionato, quindi ho appena copiato il file build.gradle. Nel mio caso l'unica differenza era la mancanza della sezione compileOptions. L'ho rimosso dal mio progetto, il grado sincronizzato, reinserito la sezione compileOptions e quindi il grado sincronizzato di nuovo.


2

Nel tuo Android Studio vai su File -> Impostazioni. Quindi, scegli Build, Execution, Deployment -> Build Tools -> Gradle e seleziona "Usa default gradle wrapper (consigliato)".

Ricostruisci progetto.


2

Nel mio caso la mia buildTypessezione era al di sopra della mia productFlavorssezione. Scambiando le loro posizioni si è sbarazzato dell'avvertimento:

PRIMA:

buildTypes {

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

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

DOPO:

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

 buildTypes {

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

Sto usando Android Studio 2.1.2 con la seguente configurazione nella parte superiore della mia androidsezione:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc

1

Avevo questo avviso, dopo aver aggiornato Android Studio.

Quando sono andato su Impostazioni >> Strumenti di costruzione >> Grado ho trovato il percorso Gradle locale non valido, poiché la versione Gradle è stata aggiornata anche dalla 2.6 alla 2.8.

Risolto il problema con il nuovo percorso e la risincronizzazione del grado rimosso l'avviso.

Un altro modo è quello di usare gradlewrapper.


0

Cambiare distributionUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip in gradle-2.1-all.zip in gradle-wrapper.properties ha risolto il problema per me.


0

EDIT: Questo come ho finalmente risolto questo problema ...

  1. Naviga in Android Studio per:

    File | Impostazioni | Build, Execution, Deployment | Strumenti di costruzione | Gradle

  2. Assicurati che sia deselezionato, nonostante si consiglia di mantenere ...

    Usa wrapper pendenza predefinito (consigliato)

  3. e che questo sia verificato ...

    Usa la distribuzione locale dei voti

  4. e che Gradle Home è impostato su questo, con possibilmente un successivo gradle-nn ...

    C: / Programmi / Android / Android Studio1 / gradle / gradle-2.4

Potrebbe essere necessario riavviare Android Studio, ricostruire il progetto, ecc. Ma il problema è stato risolto.

Fine di EDIT.

Sto pubblicando questo per avvisare chiunque altro a questo problema di ignorarlo. Il progetto funziona perfettamente a prescindere. Questo è semplicemente un bug nel sistema di compilazione, speriamo di essere risolto presto. Ho pubblicato un commento e votato qui dove è di nuovo un argomento attivo ...

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

Dopo aver provato, senza successo, i suggerimenti nei seguenti tre thread, ho rielaborato l'intero progetto da zero. Ho avviato un nuovo progetto Android Studio, ho copiato tutte le librerie e i file principali originali ignorando qualsiasi file generato dal sistema di compilazione e ricostruito il progetto. Tutto andava bene, tranne tutti quegli avvisi "non si possono applicare a" (groovy.lang.Closure) "" riapparvero con vendetta. Poi ho seguito di nuovo questi suggerimenti solo per essere certo di non aver trascurato qualcosa.

1 buildTypes non può essere applicato a groovy.lang.Closure vai alle impostazioni in Android Studio e seleziona "Usa wrapper gradle": In Android Studio seleziona: File \ Impostazioni \ Build, Execution, Deployment \ Build tools \ Gradle Mark: Usa il gradle predefinito wrapper (impostazione predefinita) Questa opzione ha rimosso tutti gli avvisi 'non applicabile a' (groovy.lang.Closure ') nei file di build.

2 'dipendenze' non possono essere applicate a '(groovy.lang.Closure)' Apri e modifica file: yourproject / gradle / wrapper / gradle-wrapper.propertie. Modifica il contenuto come sotto l'immagine, quindi salva. Elimina questa cartella: yourproject / .gradle. Fai clic su Sincronizza progetto con file gradle, quindi sei a posto.

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

La mia configurazione è: Android Studio 1.3, compileSdk versione 22, buildTools versione "22.0.1"



0

Tutto quello che dovevo fare per rimuovere

productFlavors {
}

A partire dal

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

e l'avvertimento è andato via.

L'aspetto finale è stato così

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

0

Cambiare il buildToolsVersionda

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

per

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

ha funzionato per me.

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.