Nie można zastosować buildTypes do groovy.lang.Closure

241

Otrzymuję to ostrzeżenie w pliku oceny projektu:

Ostrzeżenie: (16, 5) Nie można zastosować „buildTypes” do „(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)”

Moja sekcja buildTypes to:

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

Obecnie używam Androida Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 i targetSdkVersion 22. Próbowałem wycofać się do wersji 21, ale wciąż otrzymywałem ostrzeżenie.

Co powoduje to ostrzeżenie i jak go naprawić?

Jim Vitek
źródło
Czy zastosowałeś wtyczkę: „com.android.aplication” lub „com.android.library”?
Kirill Boyarshinov
@Kirill: com.android.application
Jim Vitek

Odpowiedzi:

471

Dla mnie problem nie został rozwiązany przez zastosowanie powyższego rozwiązania. Zamiast tego musiałem przejść do ustawień w Android Studio i wybrać „Użyj opakowania stopniowego”:

W Android Studio wybierz: Plik \ Ustawienia \ Kompilacja, Wykonanie, Wdrażanie \ Kompiluj narzędzia \ Gradle

(Użytkownicy komputerów Mac: Android Studio \ Preferencje ... \ Kompilacja, wykonanie, wdrożenie \ Narzędzia do kompilacji \ Gradle )

Znak: użyj domyślnego opakowania gradientu (domyślne)

To usunęło wszystkie ostrzeżenia „nie można zastosować do” (groovy.lang.Closure ”) w plikach kompilacji.

Piotr
źródło
2
To poprawna odpowiedź, problem pojawił się, gdy otworzyłem projekt w systemie Windows, a następnie w systemie Linux (przez Dropbox) zmienia on lokalizację dystrybucji stopni, więc lepiej jest użyć domyślnego opakowania stopni.
Rodrigo Direito,
1
Miałem ten sam problem. Mój kolega z drużyny pracuje na komputerze z systemem Windows. Pobieranie aktualizacji daje mi ten problem
chip
@ Waterbear Z tego powodu dokonałem edycji oryginalnej odpowiedzi (szukałem też: D). Po wzajemnej recenzji będzie dostępna :) Zobacz: i.imgur.com/BtCijIW.png
StefMa
Jakoś 1.3.1 AS na Macu zresetuj to ustawienie w Build -> Clean. Przywrócenie go naprawia kompilację. Dzięki!
Den Drobiazko
11
Coś głupiego w Android Studio, zaczęło pokazywać mi ostrzeżenie, gdy zrobiłem kompilację docelową 22 i buildToolsVersion 22.0.1 .... Dla mnie „Użyj domyślnego opakowania stopni” było już oznaczone jako domyślne (AS 2.0 Beta) ... po prostu wytnij mój blok kodu i wkleiłem w tym samym miejscu (bez zmian kodu, bez zmian konfiguracji) .... ostrzeżenie zostało usunięte!
Umair
127

Miałem ten sam problem. Przeniesienie buildTypes jako ostatniego wpisu w sekcji Androida działało dla mnie.

android {
    ...
    buildTypes {
    }
}
dorr
źródło
2
Dziwne, że jego pozycja powinna coś zmienić, ale najwyraźniej tak.
Jason Crosby
To też działa dla mnie. Czy masz jakieś pomysły, jak to działa? Dzięki.
myNameCoad
4
Wydawało się, że to również działa dla mnie, ale potem cofnąłem te zmiany i skopiowałem / wkleiłem ten blok w tym samym miejscu, a ostrzeżenie również zniknęło. Następnie próbowałem cofnąć to wszystko, zamknąć i ponownie otworzyć projekt, aby powtórzyć ostrzeżenie, ale go nie było. Myślę, że to tylko jeden z takich ostrzeżeń.
elliptic1 1
Dla mnie prawie ostrzeżenia zostały usunięte przez odpowiedź Piotra, z wyjątkiem ostrzeżenia o buildTypes. To rozwiązanie zadziałało na ostatnie!
hata
76

1 Wytnij i wklej „buildTypes” w tej samej pozycji w sekcji „Android”

2 Re Sync Project

Luca Barillà
źródło
16

Aby rozwiązać ten problem, w Android Studio przejdź do Plik -> Ustawienia . W ustawieniach wybierz Kompilacja, wykonanie, wdrożenie -> Narzędzia kompilacji -> Stopień i wybierz opcję „Użyj domyślnego opakowania stopni (zalecane)” .

Po odbudowaniu build.gradle będzie w porządku.

Ivan V.
źródło
1
To poprawna odpowiedź LUB możesz wybrać właściwą lokalizację stopni
nieważny wskaźnik
1
jak różni się od odpowiedzi @ Piotra.
AndyW
13

Jeśli żadna z powyższych opcji nie działa, wykonaj następujące czynności

  1. Zmień projekt na Projectperspektywiczny w „Eksploratorze projektów”.
  2. Usuń .gradlei buildfoldery.
  3. Kliknij Plik -> Unieważnij pamięć podręczną / Uruchom ponownie ... -> Unieważnij i uruchom ponownie
  4. Teraz działa, szczęśliwe kodowanie.
Atif Farrukh
źródło
7

Udało mi się rozwiązać problem, wykonując następujące czynności: Kliknij „Plik”, a następnie „Unieważnij pamięć podręczną / Uruchom ponownie

Fred
źródło
6

Najłatwiejszym sposobem rozwiązania tego problemu jest odtworzenie projektu, aby umożliwić Android Studio ponowną konfigurację programu Gradle.

Po prostu wybierz „Otwórz istniejący projekt Android Studio” i wybierz folder projektu.

Więcej informacji tutaj .

AleFranz
źródło
4

to działało dla mnie:

buildTypes.debug {
    ext.enableCrashlytics = false
}

buildTypes.release {
    debuggable false
    zipAlignEnabled true
    minifyEnabled false
    signingConfig signingConfigs.release
}
serggl
źródło
4

Problem pojawia się, gdy importujesz projekt do swojego środowiska, a wtyczka Gradle jest instalowana w innym miejscu niż w oryginale. Musisz tylko wskazać, gdzie znajduje się Twoja instalacja Gradle.

Przenoszenie buildTypes lub defaultConfig lub cokolwiek innego między sobą nie jest kompletnym rozwiązaniem

Chisko
źródło
W ten sposób ostatecznie rozwiązałem ten problem ... 1. Przejdź w Android Studio do: Plik | Ustawienia | Plik | Ustawienia | Kompilacja, wykonanie, wdrożenie | Narzędzia do budowania | Stopień 2. Upewnij się, że nie jest zaznaczone, mimo że zaleca się zachować ... Użyj domyślnego opakowania gradientu (zalecane) 3. i że ten jest zaznaczony ... Użyj lokalnego rozkładu stopni 4. i ustaw Gradle Home na to, być może później gradle-nn ... C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4 Może być konieczne ponowne uruchomienie Android Studio, przebudowanie projektu itp., ale problem został rozwiązany.
Mick
3

Problem polega na tym, że ustawienia Android Studio, które prawdopodobnie zaimportowałeś podczas aktualizacji, nadal wskazywały na gradle-2.4 lub niektóre inne wersje niż Android Studio 1.5 oczekuje.

Aby rozwiązać ten problem, otwórz Ustawienia i przejdź do Kompilacja, Wykonanie, Wdrażanie> Narzędzia do budowania> Stopniowanie i zmień ścieżkę główną lokalnej dystrybucji stopni lub wybierz domyślne opakowanie stopni.

Zastosuj i ponownie zsynchronizuj swój projekt.

anthonymonori
źródło
2

Miałem ten sam problem. Rozpocząłem nowy projekt i zadziałał, więc właśnie skopiowałem plik build.gradle. W moim przypadku jedyną różnicą był brak sekcji compileOptions. Usunąłem go z mojego projektu, zsynchronizowałem grad, ponownie wstawiłem sekcję compileOptions, a następnie ponownie zsynchronizowałem grad.

greywolf82
źródło
2

W Android Studio przejdź do Plik -> Ustawienia. Następnie wybierz Kompilacja, wykonanie, wdrożenie -> Narzędzia kompilacji -> Stopień i wybierz „Użyj domyślnego opakowania stopni (zalecane)”.

Odbuduj projekt.


źródło
2

W moim przypadku moja buildTypessekcja była powyżej mojej productFlavorssekcji. Wymiana pozycji pozbyła się ostrzeżenia:

PRZED:

buildTypes {

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

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

PO:

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

 buildTypes {

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

Korzystam z Androida Studio 2.1.2 z następującą konfiguracją u góry mojej androidsekcji:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc
Tash Pemhiwa
źródło
1

Kiedyś aktualizowałem to Android Studio.

Kiedy poszedłem do Ustawienia >> Narzędzia do budowania >> Gradle , okazało się, że lokalna ścieżka Gradle jest nieprawidłowa, ponieważ zaktualizowano również wersję Gradle z 2.6 do 2.8.

Naprawiono nową ścieżkę i stopień ponownej synchronizacji usunął ostrzeżenie.

Innym sposobem jest użycie gradlewrapper.

IronBlossom
źródło
0

Zmiana dystrybucjiUrl = https: //services.gradle.org/distribution/gradle-2.1-bin.zip na gradle-2.1-all.zip w gradle-wrapper.properties rozwiązał problem dla mnie.

kengura
źródło
0

EDYCJA: W ten sposób ostatecznie rozwiązałem ten problem ...

  1. Nawiguj w Android Studio, aby:

    Plik | Ustawienia | Kompilacja, wykonanie, wdrożenie | Narzędzia do budowania | Gradle

  2. Upewnij się, że to nie jest zaznaczone, mimo że zaleca się zachować ...

    Użyj domyślnego opakowania gradientowego (zalecane)

  3. i że ten jest sprawdzony ...

    Użyj lokalnej dystrybucji stopni

  4. i że Gradle Home jest do tego nastawiony, być może później gradle-nn ...

    C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4

Może być konieczne ponowne uruchomienie Android Studio, przebudowanie projektu itp., Ale problem został rozwiązany.

Koniec edycji.

Publikuję to, aby doradzić wszystkim, którzy są nowi w tym problemie, aby go zignorowali. Projekt działa idealnie niezależnie. Jest to po prostu błąd w systemie kompilacji, który, mam nadzieję, zostanie wkrótce naprawiony. Zamieściłem komentarz i głosowałem tutaj, gdzie jest to znowu aktywny temat ...

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

Po bezskutecznym wypróbowaniu sugestii z trzech poniższych wątków ponownie wykonałem cały projekt od podstaw. Rozpocząłem nowy projekt Android Studio, skopiowałem do niego wszystkie oryginalne biblioteki lib i pliki główne, ignorując wszystkie pliki generowane przez system kompilacji i przebudowując projekt. Wszystko było w porządku, z wyjątkiem tych, których „nie można zastosować do ostrzeżeń (groovy.lang.Closure)” ponownie pojawiły się z zemsty. Potem ponownie przejrzałem te sugestie, aby mieć pewność, że niczego nie przeoczyłem.

1 buildTypes nie może być zastosowany do groovy.lang. Zamknięcie przejdź do ustawień w Android Studio i wybierz „Użyj opakowania stopni”: W Android Studio wybierz: Plik \ Ustawienia \ Kompilacja, Wykonanie, Wdrożenie \ Narzędzia budowania \ Oznaczenie stopnia: Użyj domyślnego stopnia wrapper (domyślnie) To usunięte wszystkie „nie można zastosować do ostrzeżeń” (groovy.lang.Closure ”) w plikach kompilacji.

2 „zależności” nie można zastosować do „(groovy.lang.Closure)” Otwórz i edytuj plik: twój projekt / gradle / wrapper / gradle-wrapper.propertie. Edytuj zawartość jak poniżej, a następnie zapisz. Usuń ten folder: twójprojekt / .gradle. Kliknij Synchronizuj projekt z plikami stopni, możesz zacząć.

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

Moja konfiguracja to: Android Studio 1.3, compileSdk wersja 22, buildTools wersja „22.0.1”

Mick
źródło
0

usuń folder stopni w folderze aplikacji i ponownie zsynchronizuj projekt

Alex Perevozchykov
źródło
0

Wszystko, co musiałem zrobić, aby usunąć

productFlavors {
}

Z

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

i ostrzeżenie zniknęło.

Ostateczny wygląd był taki

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
Max
źródło
0

Zmiana buildToolsVersionz

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

do

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

pracował dla mnie.

Gergana Tsvetkova
źródło