O Gradle versão 3.3 não é compatível com o método forTask () em BuildActionExecuter

111

Acabei de atualizar meu Android Studio para 3.0 canário 1. Agora estou trabalhando em meu projeto existente no Android Studio 3.0 canário 1. Por padrão, gradle: 3.0.0-alpha1 é definido em meu projeto: gradle_file. Então, mudei minha versão do Gradle para 2.2.3 e agora estou recebendo este erro:

Erro: falha ao concluir a execução do Gradle.

Explicação: A versão do Gradle que você está usando (3.3) não oferece suporte ao método forTasks () em BuildActionExecuter. O suporte para isso está disponível no Gradle 3.5 e em todas as versões posteriores.

Anexei meu arquivo gradle aqui

// 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
fonte
5
Alguém pode sugerir como você pode corrigir isso sem ter que atualizar a versão do Gradle e a versão do plugin do Android? Porque fazer isso requer muitas outras mudanças que não podemos fazer devido a algumas restrições de negócios.
Sasuke Uchiha

Respostas:

196

Eu acabei de ter o mesmo problema. Corrigido alterando Gradle distributionUrl em "gradle-wrapper.properties".

Aqui está o que eu configurei:

#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

para mais detalhes

Vídeo oficial para ajudar a mitigar https://www.youtube.com/watch?v=oBsbI8ICYKg

veja também o comentário abaixo de @TmTron

falico
fonte
19
Para quem deseja saber a distribuição mais recente, vá para o diretório services.gradle.org/distributions . Todos eles estão listados
IG Pascual
4
Leia o comentário @IGPascual antes de mudar para a versão específica, porque você pode apenas atualizar a versão para a versão mais recente disponível. Quando este comentário foi postado, a versão atual é 4.0 (estável). Portanto, é seguro se você mudar paradistributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip
HendraWD de
4
Apenas tome cuidado ao abrir um aplicativo multi-módulo: o Android Studio pode mostrar apenas um campo de propriedades gradle-wrapper na visualização Project-Android. para certificar-se de que mudou tudo, use Localizar no caminho (CTRL + SHIFT + F) e pesquise por DistributionUrl .
TmTron de
Eu também enfrentei o mesmo problema com o erro abaixo. 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. Então, atualizei o arquivo gradle-wrapper.properties paradistributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
ViramP
1
Obrigado por seu alerta, @TmTron, esse era o meu problema. falico, se você não se importa, acho que seria benéfico destacar o comentário de TmTron em sua resposta acima.
BareMetalCoder
64

Alteração no arquivo "gradle-wrapper.properties".

Coloque esta linha e sincronize o projeto-

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

Isso vai funcionar. Para verificar a versão mais recente services.gradle.org/distributions

Depois de alterado, sincronize o projeto, limpe e reconstrua o projeto uma vez no menu Build .

Kailas Bhakade
fonte
4
Verifique services.gradle.org/distributions antes de mudar para uma versão específica, porque você pode apenas atualizar a versão para a versão mais recente disponível. Quando este comentário foi postado, a versão atual é 4.0 (estável). Portanto, é seguro se você mudar para distributionUrl=https\://services.gradle.org/distributions/g‌​radle-4.0-all.zip, porque é mais estável do que a milestone-1versão
HendraWD
Sim, tem razão, prefira sempre a versão estável a outra. Mas você ainda pode usá-lo. @HendraWD Obrigado pelo comentário.
Kailas Bhakade
Atualizando o Android Studio de 2.3 para 3.0, verifique as diretrizes oficiais em youtube.com/watch?v=oBsbI8ICYKg
Kailas Bhakade 01 de
28

Isso aconteceu ao tentar construir um apk de depuração.

SOLUÇÃO: Atualize a versão do Gradle para 3.5

Navegue até Arquivo -> Estrutura do projeto -> Projeto -> Versão do Gradle = 3.5

Isso funciona para Android Studio 3.0

esta é a imagem do menu onde você deve fazer a mudança

Paixols
fonte
Esta é a solução para aqueles que intencionalmente não querem atualizar para o gradle 4.
ram
Não é verdade. Ele é atualizado para o Gradle versão 3.5, o mínimo para a funcionalidade que deseja usar.
Quinton M.
14

Siga as etapas abaixo:

  1. Abra seu projeto no android studio
  2. No menu do Android, abra gradle-wrapper.properties
  3. Altere a linha do url de distribuição com a linha abaixo

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

  1. É isso aí. Construa seu projeto agora.

A captura de tela está anexada para mais compreensão. insira a descrição da imagem aqui

Naveed Ahmad
fonte
Erro: não foi possível criar o diretório pai para o arquivo de bloqueio C: \ Users \ Kaveesh \ .gradle \ wrapper \ dists \ gradle-4.1-all \ bzyivzo6n839fup2jbap0tjew \ gradle-4.1-all.zip.lck
Kaveesh Kanwal
Ele está mostrando o problema de bloqueio. O android studio não consegue criar o diretório.
Naveed Ahmad
5

Resolvi o problema por changinf distributionUrl no seguinte código no arquivo gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Saurabh Singh
fonte
2

Depois de adicioná-los com o Gradle de nível superior

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

Temos duas maneiras de lidar com isso.

  1. Você pode atualizar a versão do seu gradle da primeira para a versão 3.5 do produto;

  2. Ou você pode definir seu wrapper Gradle para a versão 4.1.

Todas as formas são úteis.

Benchur Wong
fonte
0
  1. Abra gradle-wrapper.properties
  2. Substituir:

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

Com:

distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip
  1. Agora sincronize o projeto

Clique aqui para entender mais

Wajid Khan
fonte
0

coloque este código no arquivo gradle-wrapper.properties e ele funcionará com você

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