'dependências' não podem ser aplicadas a '(groovy.lang.Closure)'


121

Não consigo corrigir este erro:

dependencies cannot be applied to '(groovy.lang.Closure)

Este é o meu arquivo gradle:

buildscript {
     repositories {
         maven { url 'http://download.crashlytics.com/maven' }
     }

     dependencies {
         classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
     }
 }
apply plugin: 'android'
apply plugin: 'crashlytics'

repositories {
   maven { url 'http://download.crashlytics.com/maven' }
}

dependencies {
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':FRNDzTER_core')
    compile project(':cropper')
    compile project(':stickyListHeaders')
    compile "com.nostra13.universalimageloader:universal-image-loader:${rootProject.universalImageLoaderVersion}"
    compile "com.google.android.gms:play-    services:${rootProject.googlePlayServicesVersion}"
    compile "de.keyboardsurfer.android.widget:crouton:${rootProject.croutonVersion}"
    compile "com.nineoldandroids:library:${rootProject.nineoldandroidsVersion}"
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
    compile 'com.crashlytics.android:crashlytics:1.+'
}

android{
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion
    defaultConfig {
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode rootProject.versionCode
        versionName rootProject.versionName
    } 
    buildTypes {
        release {
            debuggable rootProject.prodDebug
            proguardFile 'proguard.cfg'
        }
    }

    dependencies {
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        abortOnError false
    }
 }

1
Tenho certeza de que eles estão muito relacionados e, como sugere minha resposta, acho que a marcação de erros é um bug, portanto, a disparidade de soluções. stackoverflow.com/questions/29133601/... Isso não quer dizer que a resposta de topo aqui não faz alguns pontos gerais muito válidas sobre o seu "atual" buildscript Gradle
Seb Andraos

Respostas:


22

Com base no que o Android Studio gera, você precisa ter um arquivo de projeto de nível superior build.gradlee outro para seu aplicativo build.gradle.

Nível superior:

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

buildscript {
    repositories {
        jcenter()
        maven { url 'http://download.crashlytics.com/maven' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
        classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'http://download.crashlytics.com/maven' }
    }
}

Nível de aplicação:

apply plugin: 'com.android.application'
apply plugin: 'crashlytics'

android{
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion
    defaultConfig {
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode rootProject.versionCode
        versionName rootProject.versionName
    } 
    buildTypes {
        release {
            debuggable rootProject.prodDebug
            proguardFile 'proguard.cfg'
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        abortOnError false
    }
 }     `

dependencies {
    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':FRNDzTER_core')
    compile project(':cropper')
    compile project(':stickyListHeaders')
    compile "com.nostra13.universalimageloader:universal-image-          l                        loader:${rootProject.universalImageLoaderVersion}"
    compile "com.google.android.gms:play-    services:${rootProject.googlePlayServicesVersion}"
    compile "   "de.keyboardsurfer.android.widget:crouton:${rootProject.croutonVersion}"
    compile "com.nineoldandroids:library:${rootProject.nineoldandroidsVersion}"
    compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
    compile 'com.crashlytics.android:crashlytics:1.+'
}

Mas mesmo sem tudo isso, seu problema é que você tem uma configuração dependenciesdentro do seu androidplugin.

android {
    dependencies {
    }
}

remova esse dependenciesbloco vazio .

EDIT: Eu também comecei a receber esse erro com o Android Studio mais recente, tudo o que eu precisava fazer era adicionar uma versão mais recente do plug-in Gradle e compileSdkVersion 22.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

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

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

11
Ainda fiz o mesmo problema :(
Ashwani Kottapalli

para ser sincero, acho que você deve corrigir as cotações extras e os espaços nas dependências do Crouton, Universal-Image-Loader e googleplayServices. Você deve usar apenas parte dos Serviços do Google Play também, de acordo com developer.android.com/google/play-services/setup.html
EpicPandaForce

não está funcionando ... você pode me dar o ID do fb ou qualquer outra coisa ... para que possamos treinar? por favor?
Ashwani Kottapalli

... nesse caso, não sei qual é o seu bug. :( última vez que isso aconteceu comigo, meu plugin android e Gradle foram ultrapassadas, e eu estava usando um tipo de configuração que já não existia
EpicPandaForce

1
Depende se você está usando linha de comando ou IDE. E se IDE, então o que IDE.
EpicPandaForce

247

Você pode ir para Preferências e selecionar "usar o invólucro padrão da gradação" e reconstruir o projeto. Isso funcionou bem para mim: insira a descrição da imagem aqui


4
Alguém tem uma explicação para isso acontecer?
CCR

1
Parece que depois de atualizar de 1,4 para 1,5, essa configuração foi "redefinida" para usar a distribuição local na minha máquina. Esta resposta definitivamente resolveu o problema.
seeming.amusing

3
A partir da versão 143.2532994, esse problema parece acontecer novamente ... alguém igual a mim ...? Tão chato ..
Arst

Apesar da resposta selecionada ser muito elaborado e honesto, há uma razão pela qual esta resposta tem ordem de magnitude mais upvotes
Pavel Zdenek

Ah, sim, há uma razão - usuários de mac. No Windows, a página é diferente. "Nada para mostrar". A resposta marcada é pelo menos de alguma forma útil.
Gangnus

37

Vamos para

janelas

Arquivo -> Configurações -> Compilação, Execução, Implantação -> Ferramentas de Compilação -> Gradle

Mac

Preferência -> Compilação, Execução, Implantação -> Ferramentas de Compilação -> Gradle

e selecione Usar wrapper padrão da gradação


1
Janelas. Nada para selecionar.
Gangnus

2
Primeiro você precisa abrir o projeto primeiro.
Raptor

E no Linux é o mesmo que no Windows: Arquivo -> Configurações -> Compilação, Execução, Implantação -> Ferramentas de Compilação -> Gradle. Você pode editar sua resposta e escrever "Windows / Linux".
Lenooh 25/08/16

18

Meu problema é que todo o arquivo build.setting estava ocupado com cannot be applied to '(groovy.lang.Closure)'mensagens de aviso em vez de ocorrer em qualquer variável específica.

Eu tentei todas as soluções fornecidas por outras pessoas, mas nenhuma delas funciona para mim. Acabei fazendo essas etapas e funciona como um encanto. Se você estiver enfrentando o mesmo problema, tente.

  1. Abra e edite o arquivo: yourproject/gradle/wrapper/gradle-wrapper.properties . Edite o conteúdo para atualizar a versão da distribuição de grânulos, conforme mostrado na imagem abaixo, e salve.
  2. Apagar esta pasta: yourproject/.gradle.
  3. Clique Sync project with gradle files, então você está pronto para ir.

insira a descrição da imagem aqui


1
Não há necessidade de excluir o diretório yourproject / .gradle. Se você optar por fazer isso, salve as personalizações feitas lá, como adicionar um arquivo gradle.properties com org.gradle.daemon = true (uma otimização comum). No entanto, você pode simplesmente reconstruir, e o wrapper gradle fará o download da nova versão especificada no DistributionUrl, juntamente com as versões mais antigas. É bom que os diretórios de versões mais antigas permaneçam no diretório gradle do seu projeto.
Mark McClelland

A atualização da versão gradle gradle-wrapper.propertiesresolveu meu problema. Obrigado!
BVB

18

Se você já está usando o "invólucro gradle padrão" e ele não ajuda:

In Menu click: File -> Invalidate Caches / Restart...

Se isso também não ajudar, tente em duas etapas:

1) Delete ".gradle" folder (and "build" folder if you have it already)

2) In Menu click: File -> Invalidate Caches / Restart...

Após reiniciar, o aviso deve desaparecer.

(Para mim, funcionou e para o Android Studio e para o IntelliJ Idea)


Trabalhou para mim. A única coisa a ser observada é: se você estiver usando seu próprio gradle em vez do pacote, também será necessário excluir .gradleo diretório inicial.

1
Apenas fazer a 2) instrução funcionou para mim. Obrigado!!
Manolodewiner 16/05

2
trabalhou ... por 5 segundos. então eu recebi esse erro novamente.
Yar

É um pouco frustrante o quão ruim o IntelliJ ficou recentemente ao analisar os projetos corretamente. Este costumava ser o seu forte ... agora parece que tropeça com a menor coisa.
smaudet

4

Entrei nas preferências para tentar uma das outras respostas quando notei um aviso de que meu gradlediretório pessoal estava errado. Então eu abri o navegador de arquivos e escolhi a gradleversão mais recente, e todos os erros desapareceram. Imagem mostrada abaixo.

insira a descrição da imagem aqui


1

Aposto que o problema não tem nenhuma relação com o código que está emitindo avisos, provavelmente é o seu arquivo de progresso. Eu tinha o seguinte no meu código e recebi o mesmo aviso:

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

Ao comentar runProguard false, todos os meus problemas desaparecem, vai entender :)


Daniel Wilson ajuda se você mudar runProguardpara minifyEnabled? Mais informações é fornecido aqui
Sergii N.

1

Eu tenho o mesmo problema no android studio 2.2, funciona para mim:

original:

android {
...
}

dependencies {
...
}

mudar dependenciespara android:

android {
...
   dependencies {
   ...
   }
}

1

Resolvi o problema no Android Studio, invalidando o cache e reiniciando.

File-> Invalidate Caches / Restart..

insira a descrição da imagem aqui


1

Eu encontrei um problema semelhante a isso no IntelliJ para um projeto Kotlin. Parece que o problema era que, no meu projeto, mesmo que estivesse definido para usar o JDK 8, as versões de idioma e API de alguma forma foram definidas para 1,3. Consulte Preferências do projeto> Facetas. No meu caso, marquei "usar configurações do projeto", mas defini-las manualmente por faceta também pode funcionar.


0
  1. Feche o projeto (Arquivo / Fechar projeto),
  2. Selecione "Abrir um projeto existente do Android Studio" no menu Iniciar e selecione a pasta que contém o seu projeto Android.

Este trabalho para mim.


0

Os arquivos Gradle podem ser explicitados em vários locais para evitar esses erros. Por exemplo, mudança

configurations {

para

project.configurations {

ou

task {
    description 'foo'

para

task {
    setDescription 'foo'

0

Para corrigir o problema, basta fechar o projeto, selecione "Abrir um projeto existente do Android Studio" no menu Iniciar e selecione a pasta que contém o seu projeto Android. Cuidado, selecione a pasta , não o arquivo de projeto .iml.


0

Recorte e cole os "buildTypes" no mesmo local na seção "android" e no projeto Ressincronizar (atualizar)


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.