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
}

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


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 .


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


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


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

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
}

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.




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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.