Gradle w wersji 3.3 nie obsługuje metody forTask () w programie BuildActionExecuter

111

Właśnie zaktualizowałem moje Android Studio do wersji 3.0 canary 1. Teraz pracuję nad moim istniejącym projektem na Android Studio 3.0 canary 1. Domyślnie w moim projekcie ustawiony jest gradle: 3.0.0- alpha1: gradle_file. Więc zmieniłem moją wersję Gradle na 2.2.3 i teraz otrzymuję ten błąd:

Błąd: nie udało się ukończyć wykonywania Gradle.

Przyczyna: Wersja Gradle, której używasz (3.3) nie obsługuje metody forTasks () w BuildActionExecuter. Obsługa tego jest dostępna w Gradle 3.5 i wszystkich późniejszych wersjach.

Załączam plik z ocenami tutaj

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Ajay Jayendran
źródło
5
Czy ktoś może zasugerować, jak można to naprawić bez konieczności aktualizacji wersji Gradle i wersji wtyczki Androida? Ponieważ wymaga to wielu innych zmian, których nie możemy zrobić z powodu pewnych ograniczeń biznesowych.
Sasuke Uchiha

Odpowiedzi:

196

Właśnie miałem ten sam problem. Naprawiono to, zmieniając Gradle distributionUrl w pliku „gradle-wrapper.properties”.

Oto co skonfigurowałem:

#Wed Mar 22 16:13:58 BRT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

po więcej szczegółów

Oficjalne wideo pomagające w migracji https://www.youtube.com/watch?v=oBsbI8ICYKg

zobacz także komentarz poniżej z @TmTron

falico
źródło
19
Każdy, kto chce poznać najnowszą dystrybucję, powinien przejść do katalogu services.gradle.org/distributions . Wszystkie są wymienione
IG Pascual
4
Przeczytaj komentarz @IGPascual przed przejściem do konkretnej wersji, ponieważ możesz po prostu zaktualizować wersję do najnowszej aktualnie dostępnej wersji. Kiedy ten komentarz został opublikowany, aktualna wersja to 4.0 (stabilna). Więc jest bezpiecznie, jeśli zmienisz nadistributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip
HendraWD
4
Po prostu zachowaj ostrożność podczas otwierania aplikacji wielomodułowej: Android Studio może wyświetlać tylko jeden element właściwości otoki gradle w widoku Project-Android. Aby upewnić się, że wszystko zostało zmienione, użyj funkcji Znajdź w ścieżce (CTRL + SHIFT + F) i wyszukaj DistributionUrl .
TmTron,
Cause: The version of Gradle you are using (3.3) does not support the forTasks() method on BuildActionExecuter. Support for this is available in Gradle 3.5 and all later versions. Napotkałem również ten sam problem z poniższym błędem, więc zaktualizowałem plik gradle-wrapper.properties dladistributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
ViramP
1
Dziękuję za informację, @TmTron, to był mój problem. falico, jeśli nie masz nic przeciwko, myślę, że warto byłoby podkreślić komentarz TmTron w swojej odpowiedzi powyżej.
BareMetalCoder
64

Zmiana w pliku „gradle-wrapper.properties”.

Umieść tę linię i zsynchronizuj projekt-

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

To zadziała. Sprawdź najnowszą wersję services.gradle.org/distributions

Po zmianie, raz zsynchronizuj projekt, wyczyść i odbuduj projekt z menu kompilacji .

Kailas Bhakade
źródło
4
Sprawdź services.gradle.org/distributions przed zmianą na konkretną wersję, ponieważ możesz po prostu zaktualizować wersję do najnowszej aktualnie dostępnej wersji. Kiedy ten komentarz został opublikowany, aktualna wersja to 4.0 (stabilna). Więc jest to bezpieczne, jeśli zmienisz na distributionUrl=https\://services.gradle.org/distributions/g‌​radle-4.0-all.zip, ponieważ jest bardziej stabilny niż milestone-1wersja
HendraWD
Tak, masz rację, zawsze wolisz stabilną wersję od innej. Ale nadal możesz go używać. @HendraWD Dziękuję za komentarz.
Kailas Bhakade
Aktualizacja Android Studio z wersji 2.3 do 3.0. Sprawdź oficjalne wytyczne na youtube.com/watch?v=oBsbI8ICYKg
Kailas Bhakade
28

Stało się to podczas próby zbudowania apk do debugowania.

ROZWIĄZANIE: Zaktualizuj wersję Gradle do 3.5

Przejdź do Plik -> Struktura projektu -> Projekt -> Wersja Gradle = 3.5

Działa to w przypadku Androida Studio 3.0

to jest obraz menu, w którym musisz dokonać zmiany

Paixols
źródło
Jest to rozwiązanie dla tych, którzy celowo nie chcą uaktualniać do gradle 4.
ram
Tak nie jest. Uaktualnia do wersji Gradle 3.5, minimum dla funkcjonalności, z której chce korzystać.
Quinton M.,
14

Wykonaj poniższe czynności:

  1. Otwórz swój projekt w Android Studio
  2. W menu Androida otwórz gradle-wrapper.properties
  3. Zmień linię adresu URL dystrybucji na poniższą linię

distributionUrl = https: //services.gradle.org/distributions/gradle-4.1-all.zip

  1. Otóż ​​to. Zbuduj swój projekt teraz.

Zrzut ekranu jest dołączony dla lepszego zrozumienia. wprowadź opis obrazu tutaj

Naveed Ahmad
źródło
Błąd: nie można utworzyć katalogu nadrzędnego dla pliku blokady C: \ Users \ Kaveesh \ .gradle \ wrapper \ dists \ gradle-4.1-all \ bzyivzo6n839fup2jbap0tjew \ gradle-4.1-all.zip.lck
Kaveesh Kanwal
Pokazuje problem z zamkiem. Android Studio nie może utworzyć katalogu.
Naveed Ahmad
5

Rozwiązałem ten problem przez changinf distributionUrl w poniższym kodzie w pliku gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Saurabh Singh
źródło
2

Po dodaniu ich za pomocą Gradle najwyższego poziomu

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha9'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
ViramP
źródło
1

Mamy na to dwa sposoby.

  1. Możesz zaktualizować wersję swojego gradle z wczesnej do wersji 3.5;

  2. Lub możesz wymyślić opakowanie gradle do wersji 4.1.

Wszystkie sposoby są przydatne.

Benchur Wong
źródło
0
  1. Otwórz gradle-wrapper.properties
  2. Zastąpić:

    distributionUrl = https: //services.gradle.org/distributions/gradle-3.3-all.zip

Z:

distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
  1. Teraz zsynchronizuj projekt

Kliknij tutaj, aby uzyskać więcej informacji

Wajid khan
źródło
0

umieść ten kod w pliku gradle-wrapper.properties i będzie z tobą współpracował

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Ahmed Mohamed
źródło