buildTypes kann nicht auf groovy.lang.Closure angewendet werden

241

Ich erhalte diese Warnung in meiner Projekt-Gradle-Datei:

Warnung: (16, 5) 'buildTypes' kann nicht auf '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)' angewendet werden.

Mein Abschnitt buildTypes lautet:

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

Ich verwende derzeit Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 und targetSdkVersion 22. Ich habe versucht, auf 21 zurückzusetzen, erhielt aber immer noch die Warnung.

Was verursacht diese Warnung und wie wird sie behoben?

Jim Vitek
quelle
Haben Sie das Plugin 'com.android.aplication' oder 'com.android.library' angewendet?
Kirill Boyarshinov
@ Kirill: com.android.application
Jim Vitek

Antworten:

471

Für mich wurde das Problem nicht durch Anwendung der obigen Lösung gelöst. Stattdessen musste ich zu den Einstellungen in Android Studio gehen und "Gradle Wrapper verwenden" auswählen:

Wählen Sie in Android Studio Folgendes aus: Datei \ Einstellungen \ Erstellen, Ausführung, Bereitstellung \ Build-Tools \ Gradle

(Mac-Benutzer: Android Studio \ Einstellungen ... \ Erstellen, Ausführen, Bereitstellen \ Erstellen von Tools \ Gradle )

Markieren : Standard-Gradle-Wrapper verwenden (Standard)

Dadurch wurden alle Warnungen in den Build-Dateien entfernt, auf die nicht angewendet werden kann (groovy.lang.Closure).

Peter
quelle
2
Dies ist die richtige Antwort. Das Problem trat auf, als ich das Projekt unter Windows öffnete und dann unter Linux (über Dropbox) den Speicherort der Gradle-Distribution änderte. Daher ist es besser, den Standard-Gradle-Wrapper zu verwenden.
Rodrigo Direito
1
Ich hatte das gleiche Problem. Mein Teamkollege arbeitet auf einer Windows-Maschine. Das Abrufen von Updates gibt mir dieses Problem
Chip
@Waterbear Ich habe die ursprüngliche Antwort aus diesem Grund bearbeitet (ich habe auch eine Weile danach gesucht: D). Nach einem Peer Review wird es verfügbar sein :) Siehe: i.imgur.com/BtCijIW.png
StefMa
Irgendwie hat 1.3.1 AS auf Mac diese Einstellung auf Build -> Clean zurückgesetzt. Durch Zurücksetzen wird der Build behoben. Vielen Dank!
Den Drobiazko
11
Etwas dummes mit Android Studio, es zeigte mir eine Warnung, als ich von Build Target 22 und BuildToolsVersion 22.0.1 erstellt habe. Für mich war 'Standard-Gradle-Wrapper verwenden' bereits als Standard markiert (AS 2.0 Beta) ... ich nur schneide meinen Codeblock aus und füge ihn an derselben Stelle ein (keine Codeänderungen, keine Konfigurationsänderungen) .... Warnung wurde entfernt!
Umair
127

Ich hatte das gleiche Problem. Das Verschieben der buildTypes als letzter Eintrag im Android-Bereich hat bei mir funktioniert.

android {
    ...
    buildTypes {
    }
}
dorr
quelle
2
Seltsam, dass seine Position einen Unterschied machen sollte, aber anscheinend tut es das.
Jason Crosby
Das funktioniert auch bei mir. Haben Sie Ideen, wie das funktioniert? Vielen Dank.
myNameCoad
4
Dies schien auch für mich zu funktionieren, aber dann habe ich diese Änderungen rückgängig gemacht und diesen Block an derselben Stelle kopiert / eingefügt, und die Warnung wurde ebenfalls gelöscht. Dann habe ich versucht, alles rückgängig zu machen und das Projekt zu schließen und erneut zu öffnen, um die Warnung zu replizieren, aber es war weg. Ich denke, es ist nur eine dieser Warnungen.
elliptisch1
Für mich wurden fast alle Warnungen durch Peters Antwort gelöscht, bis auf eine Warnung über buildTypes. Dann funktionierte diese Lösung für die letzte!
hata
76

1 Schneiden Sie die "buildTypes" an derselben Stelle im Abschnitt "android" aus und fügen Sie sie ein

2 Projekt erneut synchronisieren

Luca Barillà
quelle
16

Um dieses Problem zu beheben, gehen Sie in Ihrem Android Studio zu Datei -> Einstellungen . Wählen Sie in den Einstellungen Build, Execution, Deployment -> Build Tools -> Gradle und wählen Sie die Option "Standard-Gradle-Wrapper verwenden (empfohlen)" .

Nach dem Wiederaufbau ist Ihr build.gradle völlig in Ordnung.

Ivan V.
quelle
1
Dies ist die richtige Antwort ODER Sie können die richtige Gradle-Position auswählen
ungültiger Zeiger
1
wie es anders ist als @ Peters Antwort.
AndyW
13

Wenn keine der oben genannten Optionen funktioniert, gehen Sie wie folgt vor

  1. Ändern Sie das Projekt Projectim "Projektexplorer" in die Perspektive.
  2. Löschen .gradleund buildOrdner.
  3. Klicken Sie auf Datei -> Caches ungültig machen / neu starten ... -> Ungültig machen und neu starten
  4. Jetzt funktioniert es, fröhliche Codierung.
Atif Farrukh
quelle
7

Ich habe es geschafft, mein Problem einfach dadurch zu lösen: Klicken Sie auf "Datei" und wählen Sie "Caches ungültig machen / neu starten"

Fred
quelle
6

Der einfachste Weg, um diese Gradle-Probleme zu beheben, besteht darin, das Projekt neu zu erstellen, damit Android Studio Gradle neu konfigurieren kann.

Wählen Sie einfach "Vorhandenes Android Studio-Projekt öffnen" und wählen Sie Ihren Projektordner aus.

Weitere Details hier .

AleFranz
quelle
4

das hat bei mir funktioniert:

buildTypes.debug {
    ext.enableCrashlytics = false
}

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

Das Problem tritt auf, wenn Sie ein Projekt in Ihre Umgebung importieren und das Gradle-Plugin an einem anderen Speicherort als im Original installiert ist. Sie müssen nur darauf hinweisen, wo sich Ihre Gradle-Installation befindet.

Das Verschieben von buildTypes oder defaultConfig oder was auch immer untereinander ist keine vollständige Lösung

Chisko
quelle
So habe ich dieses Problem endlich gelöst ... 1. Navigieren Sie in Android Studio zu: Datei | Einstellungen | Datei | Einstellungen | Erstellen, Ausführen, Bereitstellen | Tools erstellen | Gradle 2. Stellen Sie sicher, dass dieses Kontrollkästchen deaktiviert ist, obwohl empfohlen wird, ... Standard-Gradle-Wrapper verwenden (empfohlen) 3. und dass dieser aktiviert ist ... Lokale Gradle-Verteilung verwenden 4. und Gradle Home auf eingestellt ist Dies, möglicherweise mit einem späteren Gradle-nn ... C: / Programme / Android / Android Studio1 / Gradle / Gradle-2.4 Möglicherweise müssen Sie Android Studio neu starten, das Projekt neu erstellen usw., aber das Problem ist behoben.
Mick
3

Das Problem ist, dass Sie Ihre Android Studio-Einstellungen wahrscheinlich beim Upgrade importiert haben, immer noch auf gradle-2.4 oder einige andere Versionen verweisen, als Android Studio 1.5 erwartet.

Um dieses Problem zu lösen, öffnen Sie Einstellungen und gehen Sie zu Erstellen, Ausführen, Bereitstellen> Build-Tools> Gradle und ändern Sie den Home-Pfad Ihrer lokalen Gradle-Distribution oder wählen Sie den Standard-Gradle-Wrapper aus.

Übernehmen Sie Ihr Projekt und synchronisieren Sie es erneut.

anthonymonori
quelle
2

Ich hatte das gleiche Problem. Ich habe ein neues Projekt gestartet und es hat funktioniert, also habe ich einfach die Datei build.gradle kopiert. In meinem Fall war der einzige Unterschied das Fehlen des Abschnitts compileOptions. Ich habe es aus meinem Projekt entfernt, gradle synchronisiert, den Abschnitt compileOptions erneut eingefügt und dann gradle erneut synchronisiert.

greywolf82
quelle
2

Gehen Sie in Ihrem Android Studio zu Datei -> Einstellungen. Wählen Sie als Nächstes Build, Execution, Deployment -> Build Tools -> Gradle und wählen Sie "Standard-Gradle-Wrapper verwenden (empfohlen)".

Projekt neu erstellen.


quelle
2

In meinem Fall war mein buildTypesAbschnitt über meinemproductFlavors Abschnitt. Durch das Vertauschen ihrer Positionen wurde die Warnung beseitigt:

VOR:

buildTypes {

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

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

NACH DEM:

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

 buildTypes {

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

Ich verwende Android Studio 2.1.2 mit der folgenden Konfiguration oben in meinem androidAbschnitt:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

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

Ich hatte diese Warnung, nachdem ich Android Studio aktualisiert hatte.

Als ich zu Einstellungen >> Build Tools >> Gradle ging, stellte ich fest, dass der lokale Gradle-Pfad ungültig war, da die Gradle-Version ebenfalls von 2.6 auf 2.8 aktualisiert wurde.

Der neue Pfad wurde korrigiert und durch erneutes Synchronisieren wurde die Warnung entfernt.

Ein anderer Weg ist zu verwenden gradlewrapper.

IronBlossom
quelle
0

Das Ändern von DistributionUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip in gradle-2.1-all.zip in gradle-wrapper.properties löste das Problem für mich.

Kengura
quelle
0

EDIT: So habe ich endlich dieses Problem gelöst ...

  1. Navigieren Sie in Android Studio zu:

    Datei | Einstellungen | Erstellen, Ausführen, Bereitstellen | Tools erstellen | Gradle

  2. Stellen Sie sicher, dass dies deaktiviert ist, obwohl empfohlen wird, ...

    Standard-Gradle-Wrapper verwenden (empfohlen)

  3. und dass dieser überprüft wird ...

    Verwenden Sie die lokale Gradle-Verteilung

  4. und dass Gradle Home darauf eingestellt ist, möglicherweise mit einem späteren Gradle-nn ...

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

Möglicherweise müssen Sie Android Studio neu starten, das Projekt neu erstellen usw., aber das Problem ist behoben.

Ende der Bearbeitung.

Ich poste dies, um anderen Neulingen dieses Problems zu raten, es zu ignorieren. Das Projekt läuft trotzdem perfekt. Dies ist ganz einfach ein Fehler im Build-System, der hoffentlich bald behoben wird. Ich habe einen Kommentar gepostet und hier abgestimmt, wo es wieder ein aktives Thema ist ...

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

Nachdem ich erfolglos die Vorschläge in den folgenden drei Threads ausprobiert hatte, habe ich das gesamte Projekt von Grund auf neu erstellt. Ich habe ein neues Android Studio-Projekt gestartet, alle ursprünglichen Bibliotheken und Hauptdateien darin kopiert und dabei alle vom Build-System generierten Dateien ignoriert und das Projekt neu erstellt. Alles war in Ordnung, außer dass all diese Warnungen, die nicht angewendet werden können (groovy.lang.Closure), mit einer Rache wieder auftauchten. Dann ging ich diese Vorschläge noch einmal durch, nur um sicherzugehen, dass ich etwas nicht übersehen hatte.

1 buildTypes kann nicht auf groovy.lang.Closure angewendet werden. Gehen Sie zu den Einstellungen in Android Studio und wählen Sie "Gradle Wrapper verwenden": Wählen Sie in Android Studio: Datei \ Einstellungen \ Erstellen, Ausführen, Bereitstellen \ Build Tools \ Gradle Mark: Standardgradle verwenden Wrapper (Standard) Hiermit wurden alle Warnungen in den Build-Dateien entfernt, auf die nicht angewendet werden kann (groovy.lang.Closure).

2 'Abhängigkeiten' können nicht auf '(groovy.lang.Closure)' angewendet werden. Datei öffnen und bearbeiten: yourproject / gradle / wrapper / gradle-wrapper.propertie. Bearbeiten Sie den Inhalt wie im folgenden Bild und speichern Sie ihn. Löschen Sie diesen Ordner: yourproject / .gradle. Klicken Sie auf Projekt mit Gradle-Dateien synchronisieren, und los geht's.

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

Meine Konfiguration lautet: Android Studio 1.3, compileSdk Version 22, buildTools Version "22.0.1"

Mick
quelle
0

Löschen Sie den Gradle-Ordner unter dem App-Ordner und synchronisieren Sie das Projekt erneut

Alex Perevozchykov
quelle
0

Alles was ich tun musste um zu entfernen

productFlavors {
}

Von

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

und die Warnung ging weg.

Der endgültige Look war so

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

Ändern buildToolsVersionvon

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

zu

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

arbeitete für mich.

Gergana Tsvetkova
quelle