buildTypes não pode ser aplicado a groovy.lang.Closure

241

Estou recebendo esse aviso no arquivo gradle do meu projeto:

Aviso: (16, 5) 'buildTypes' não pode ser aplicado a '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)'

Minha seção buildTypes é:

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

Atualmente, estou usando o Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 e targetSdkVersion 22. Tentei voltar para 21, mas ainda estava recebendo o aviso.

O que causa esse aviso e como ele é corrigido?

Jim Vitek
fonte
Você aplicou o plug-in: 'com.android.aplication' ou 'com.android.library'?
Kirill Boyarshinov
@Kirill: com.android.application
Jim Vitek

Respostas:

471

Para mim, o problema não foi resolvido aplicando a solução acima. Em vez disso, tive que ir às configurações no Android Studio e selecionar "Usar gradle wrapper":

No Android Studio, selecione: Arquivo \ Configurações \ Compilação, Execução, Implantação \ Ferramentas de compilação \ Gradle

(Usuários do Mac: Android Studio \ Preferences ... \ Build, Execution, Deployment \ Build tools \ Gradle )

Marca: Usar wrapper gradle padrão (padrão)

Isso removeu todos os avisos 'não podem ser aplicados a' (groovy.lang.Closure ') nos arquivos de compilação.

Peter
fonte
2
Esta é a resposta correta, o problema ocorreu quando abri o projeto no Windows e, em seguida, no Linux (via Dropbox), ele altera o local da distribuição gradle, por isso é melhor usar o wrapper gradle padrão.
Rodrigo Direito
1
Eu tive o mesmo problema. Meu companheiro de equipe trabalha em uma máquina Windows. Atualizações Buscando estão me dando esta questão
chip de
@ Waterbear Eu editei a resposta original por causa disso (pesquisei um pouco por isso também: D). Após uma revisão por pares, ele estará disponível :) Veja: i.imgur.com/BtCijIW.png
StefMa
De alguma forma, o 1.3.1 AS no Mac redefine essa configuração em Build -> Clean. A configuração de volta corrige a compilação. Obrigado!
Den Drobiazko
11
Algo estúpido com o Android Studio, ele começou a me mostrar um aviso quando eu fiz o build 22 e o buildToolsVersion 22.0.1 .... Para mim, 'Usar wrapper padrão do gradle' já estava marcado como padrão (AS 2.0 Beta) ... corte meu bloco de código e cole no mesmo local (nenhuma alteração de código, nenhuma alteração de configuração) .... o aviso foi removido!
Umair
127

Eu tive o mesmo problema. Mover os buildTypes como a última entrada na seção android funcionou para mim.

android {
    ...
    buildTypes {
    }
}
dorr
fonte
2
É estranho que sua posição faça a diferença, mas aparentemente faz.
Jason Crosby
Isso funciona para mim também. Você tem alguma idéia de como isso funciona? Obrigado.
myNameCoad
4
Isso pareceu funcionar para mim também, mas então desfiz essas alterações e copiei / colei esse bloco no mesmo local e o aviso também foi embora. Tentei desfazer tudo, fechar e reabrir o projeto para replicar o aviso, mas ele desapareceu. Eu acho que é apenas um desses tipos de avisos.
elliptic1
Para mim, quase todos os avisos foram apagados pela resposta de Peter, exceto um aviso sobre buildTypes. Então, essa solução funcionou para a última!
hata 26/06
76

1 Recorte e cole os "buildTypes" na mesma posição na seção "android"

2 Projeto Re Sincronizar

Luca Barillà
fonte
16

Para resolver esse problema, no seu Android Studio, vá para Arquivo -> Configurações . Nas configurações, escolha Compilar, Execução, Implantação -> Ferramentas de Compilação -> Gradle e selecione a opção "Usar wrapper padrão da gradação (recomendado)" .

Após a reconstrução, o build.gradle ficará totalmente bem.

Ivan V
fonte
1
Esta é a resposta correta ou você pode selecionar adequada localização Gradle
ponteiro void
1
como é diferente da resposta de @ Peter.
21416 AndyW
13

Se nenhuma das opções acima funcionar, faça o seguinte

  1. Altere o projeto para Projectperspectiva no "Project Explorer".
  2. Excluir .gradlee buildpastas.
  3. Clique em Arquivo -> invalidar caches / reiniciar ... -> invalidar e reiniciar
  4. Agora está funcionando, feliz codificação.
Atif Farrukh
fonte
7

Consegui resolver o meu problema simplesmente fazendo o seguinte: Clique em "Arquivo" e selecione "Invalidar caches / reiniciar"

Fred
fonte
6

A maneira mais fácil de corrigir esses problemas do Gradle é recriar o projeto para permitir que o Android Studio reconfigure o Gradle.

Basta selecionar "Abrir um projeto existente do Android Studio" e escolher a pasta do projeto.

Mais detalhes aqui .

AleFranz
fonte
4

isso funcionou para mim:

buildTypes.debug {
    ext.enableCrashlytics = false
}

buildTypes.release {
    debuggable false
    zipAlignEnabled true
    minifyEnabled false
    signingConfig signingConfigs.release
}
serggl
fonte
4

O problema aparece quando você importa um projeto para o seu ambiente e o plug-in Gradle é instalado em um local diferente do que estava no original. Você só precisa apontar onde está a instalação do Gradle.

Mover buildTypes ou defaultConfig ou qualquer outra coisa entre si não é uma solução completa

Chisko
fonte
Foi assim que finalmente resolvi esse problema ... 1. Navegue no Android Studio para: Arquivo | Configurações | Arquivo | Configurações | Compilação, Execução, Implantação | Ferramentas de compilação | Gradle 2. Certifique-se de que isso esteja desmarcado, apesar de ser recomendável manter ... Use o Gradle Wrapper padrão (recomendado) 3. e que este esteja marcado ... Use a distribuição local do gradle 4. e se o Gradle Home está definido como isso, possivelmente com um gradle-nn mais tarde ... C: / Arquivos de Programas / Android / Android Studio1 / gradle / gradle-2.4 Talvez seja necessário reiniciar o Android Studio, reconstruir o projeto etc., mas o problema foi resolvido.
Mick
3

O problema em questão é que as configurações do Android Studio que você provavelmente importou na atualização ainda estavam apontando para o gradle-2.4 ou outras versões que o Android Studio 1.5 espera.

Para resolver esse problema, abra Configurações e vá para Compilar, Execução, Implantação> Ferramentas de compilação> Gradle e altere o caminho inicial da distribuição de gradle local ou selecione o wrapper de gradle padrão.

Aplique e sincronize novamente o seu projeto.

anthonymonori
fonte
2

Eu tive o mesmo problema. Iniciei um novo projeto e ele funcionou, então apenas copiei o arquivo build.gradle. No meu caso, a única diferença foi a falta da seção compileOptions. Eu o removi do meu projeto, sincronizei o gradle, reinsirai a seção compileOptions e depois sincronizei o gradle novamente.

greywolf82
fonte
2

No seu Android Studio, vá para Arquivo -> Configurações. Em seguida, escolha Compilar, Execução, Implantação -> Ferramentas de Compilação -> Gradle e selecione "Usar wrapper de gradle padrão (recomendado)".

Recrie o projeto.


fonte
2

No meu caso, minha buildTypesseção estava acima da minhaproductFlavors seção. A troca de posições eliminou o aviso:

ANTES:

buildTypes {

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

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

DEPOIS DE:

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

 buildTypes {

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

Estou usando o Android Studio 2.1.2 com a seguinte configuração na parte superior da minha androidseção:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc
Tash Pemhiwa
fonte
1

Eu costumava receber esse aviso depois de atualizar o Android Studio.

Quando fui para Configurações >> Ferramentas de construção >> Gradle , achei o caminho da Gradle local inválido, pois a versão da gradle também foi atualizada de 2.6 para 2.8.

Corrigido o novo caminho e o ressincronizador gradle removeu o aviso.

Outra maneira é usar gradlewrapper.

IronBlossom
fonte
0

Alterar o DistributionUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip para gradle-2.1-all.zip em gradle-wrapper.properties resolveu o problema para mim.

kengura
fonte
0

EDIT: É assim que finalmente resolvi este problema ...

  1. Navegue no Android Studio para:

    Arquivo | Configurações | Compilação, Execução, Implantação | Ferramentas de compilação | Gradle

  2. Verifique se isso está desmarcado, apesar de ser recomendável manter ...

    Use o invólucro com gradação padrão (recomendado)

  3. e que este está marcado ...

    Usar distribuição local do gradle

  4. e que Gradle Home está definido para isso, possivelmente com um gradle-nn posterior ...

    C: / Arquivos de Programas / Android / Android Studio1 / gradle / gradle-2.4

Pode ser necessário reiniciar o Android Studio, reconstruir o projeto etc., mas o problema foi resolvido.

Fim da edição.

Estou postando isso para aconselhar alguém novo neste problema a ignorá-lo. O projeto é executado perfeitamente, independentemente. Isso é simplesmente um bug no sistema de compilação, que deve ser corrigido em breve. Eu postei um comentário e votei aqui, onde é novamente um tópico ativo ...

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

Depois de tentar, sem sucesso, as sugestões nos três tópicos a seguir, refiz todo o projeto do zero. Iniciei um novo projeto do Android Studio, copiei todas as bibliotecas originais e arquivos principais para ele, ignorando os arquivos gerados pelo sistema de compilação e reconstruindo o projeto. Tudo estava bem, exceto que todos aqueles "não podem ser aplicados a '(groovy.lang.Closure)'" avisos reapareceram com vingança. Depois, repassei essas sugestões apenas para ter certeza de que não havia esquecido nada.

1 buildTypes não pode ser aplicado a groovy.lang.Closure, vá para as configurações no Android Studio e selecione "Usar gradle wrapper": No Android Studio, selecione: Arquivo \ Configurações \ Build, Execução, Implantação \ Ferramentas de construção \ Gradle Mark: Use default gradle wrapper (padrão) Isso removeu todos os avisos 'não podem ser aplicados a' (groovy.lang.Closure ') nos arquivos de construção.

2 'dependências' não podem ser aplicadas a '(groovy.lang.Closure)' Abra e edite o arquivo: yourproject / gradle / wrapper / gradle-wrapper.propertie. Edite o conteúdo conforme a imagem abaixo e salve. Exclua esta pasta: yourproject / .gradle. Clique em Sincronizar projeto com arquivos gradle e pronto.

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

Minha configuração é: Android Studio 1.3, compileSdk versão 22, buildTools versão "22.0.1"

Mick
fonte
0

excluir pasta gradle na pasta do aplicativo e ressincronizar o projeto

Alex Perevozchykov
fonte
0

Tudo o que tive que fazer para remover

productFlavors {
}

De

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

e o aviso foi embora.

A aparência final foi assim

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
Máx.
fonte
0

Alterando o buildToolsVersionde

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

para

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

trabalhou para mim.

Gergana Tsvetkova
fonte