Gradle версии 3.3 не поддерживает метод forTask () в BuildActionExecuter


111

Я только что обновил свою Android Studio до версии 3.0 canary 1. Сейчас я работаю над своим существующим проектом на Android Studio 3.0 canary 1. По умолчанию в моем проекте: gradle_file установлен gradle: 3.0.0-alpha1 . Поэтому я изменил свою версию Gradle на 2.2.3 и теперь получаю эту ошибку:

Ошибка: не удалось завершить выполнение Gradle.

Причина. Версия Gradle, которую вы используете (3.3), не поддерживает метод forTasks () в BuildActionExecuter. Поддержка этого доступна в Gradle 3.5 и всех более поздних версиях.

Я прикрепил сюда свой файл Gradle

// 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
Может ли кто-нибудь подсказать, как вы можете исправить это, не обновляя версию Gradle и версию плагина Android? Потому что это требует множества других изменений, которые мы не можем сделать из-за некоторых бизнес-ограничений.
— Саске Учиха

Ответы:


196

У меня была такая же проблема. Исправлено путем изменения Gradle distributionUrl в "gradle-wrapper.properties".

Вот что я настроил:

#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

Больше подробностей

Официальное видео в помощь миграции https://www.youtube.com/watch?v=oBsbI8ICYKg

см. также комментарий ниже от @TmTron


19
Для всех, кто хочет узнать последнюю версию дистрибутива, перейдите в каталог services.gradle.org/distributions . Все они перечислены
— IG Pascual

4
Пожалуйста, прочтите комментарий @IGPascual, прежде чем переходить на конкретную версию, потому что вы можете просто обновить версию до последней доступной на данный момент версии. На момент публикации этого комментария текущая версия - 4.0 (стабильная). Так что это безопасно, если вы distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip
— перейдете

4
Просто будьте осторожны при открытии многомодульного приложения: Android Studio может отображать только одно поле свойств Gradle-wrapper в представлении Project-Android. чтобы обязательно все изменить, используйте команду «Найти в пути» (CTRL + SHIFT + F) и выполните поиск по 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. поэтому я обновил файл gradle-wrapper.properties дляdistributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
— ViramP

1
Спасибо за внимание, @TmTron, это была моя проблема. falico, если вы не возражаете, я думаю, что было бы полезно выделить комментарий TmTron в вашем ответе выше.
— BareMetalCoder

64

Измените файл "gradle-wrapper.properties".

Поставьте эту строчку и Sync Project-

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

Это сработает. Для проверки последней версии services.gradle.org/distributions

После изменения синхронизировать проект, очистить и перестроить проект один раз из меню сборки .


4
Перед переходом на конкретную версию проверьте services.gradle.org/distributions , потому что вы можете просто обновить версию до последней доступной на данный момент версии. На момент публикации этого комментария текущая версия - 4.0 (стабильная). Так что это безопасно, если вы distributionUrl=https\://services.gradle.org/distributions/g‌​radle-4.0-all.zipmilestone-1
— HendraWD

Да, вы правы, всегда предпочитаю стабильную версию другой. Но все же можно им пользоваться. @HendraWD Спасибо за комментарий.
— Кайлас Бхакаде

Обновление Android Studio с 2.3 до 3.0,
— ознакомьтесь с

28

Это произошло при попытке собрать отладочный apk.

РЕШЕНИЕ: Обновите версию Gradle до 3.5

Перейдите в Файл -> Структура проекта -> Проект -> Версия Gradle = 3.5

Это работает для Android Studio 3.0

это изображение меню, в котором вы должны внести изменения


Это решение для тех, кто намеренно не хочет обновляться до Gradle 4.
— ram

Это не так. Он обновляется до Gradle версии 3.5, минимальной функциональности, которую он хочет использовать.
— Quinton M.

14

Пожалуйста, выполните следующие шаги:

  1. Откройте свой проект в студии Android
  2. В меню Android откройте gradle-wrapper.properties.
  3. Измените строку URL-адреса распространения на строку ниже

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

  1. Это оно. Создайте свой проект прямо сейчас.

Скриншот прилагается для большего понимания. введите описание изображения здесь


Ошибка: не удалось создать родительский каталог для файла блокировки C: \ Users \ Kaveesh \ .gradle \ wrapper \ dists \ gradle-4.1-all \ bzyivzo6n839fup2jbap0tjew \ gradle-4.1-all.zip.lck
— Кавеш Канвал

Это показывает проблему блокировки. Студия Android не может создать каталог.
— Naveed Ahmad

5

Я решил проблему, изменив distributionUrl в следующем коде в файле gradle-wrapper.properties.

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

2

После добавления их с помощью Gradle верхнего уровня

// 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

У нас есть два способа справиться с этим.

  1. Вы можете обновить версию Gradle с ранней до версии 3.5;

  2. Или вы можете определить свою оболочку Gradle до версии 4.1.

Все способы полезны.




0

поместите этот код в файл gradle-wrapper.properties, и он будет работать с вами

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.