'зависимости' нельзя применить к '(groovy.lang.Closure)'


121

Я не могу исправить эту ошибку:

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

Это мой файл 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
Я почти уверен, что они очень связаны, и, как следует из моего ответа, я думаю, что маркировка ошибок - это ошибка, следовательно, несоответствие решений. stackoverflow.com/questions/29133601/… Это не значит, что главный ответ здесь не дает каких-то очень достоверных общих замечаний относительно вашего «текущего» скрипта сборки gradle
Себ Андраос,

Ответы:


22

В зависимости от того, что генерирует Android Studio, вам понадобится файл проекта верхнего уровня build.gradleи еще один файл для вашего приложения build.gradle.

Высший уровень:

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

Уровень приложения:

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.+'
}

Но даже без всего этого ваша проблема в том, что у вас есть dependenciesфайл androidconfig.

android {
    dependencies {
    }
}

удалите этот пустой dependenciesблок.

РЕДАКТИРОВАТЬ: Я также начал получать эту ошибку с последней версией Android Studio, все, что мне нужно было сделать, это добавить более новую версию плагина Gradle и 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
Я сделал ту же проблему :(
Ашвани Коттапалли

честно говоря, я думаю, вам следует исправить лишние кавычки и пробелы в зависимостях Crouton, Universal-Image-Loader и googleplayServices. Вы должны использовать только часть сервисов Google Play, согласно developer.android.com/google/play-services/setup.html
EpicPandaForce

не работает ... можешь дать мне идентификатор fb или что-нибудь еще ... чтобы мы могли потренироваться? пожалуйста?
Ашвани Коттапалли

... в таком случае я не знаю, что это за ошибка. :( В прошлый раз, когда это случилось со мной, мои плагины для Android и Gradle устарели, и я использовал тип конфигурации, которого больше не существовало
EpicPandaForce

1
Зависит от того, используете ли вы командную строку или IDE. А если IDE, то какая IDE.
EpicPandaForce

247

Вы можете перейти в «Настройки» и выбрать «использовать оболочку gradle по умолчанию», а затем перестроить проект. У меня это сработало: введите описание изображения здесь


4
У кого-нибудь есть объяснение, почему это происходит?
Rcs

1
Похоже, что после обновления с 1.4 до 1.5 этот параметр "сброшен", чтобы вместо этого использовать локальный дистрибутив на моей машине. Этот ответ определенно решил проблему.
seeming.amusing

3
Начиная с версии 143.2532994 эта проблема, кажется, повторяется ... кто-нибудь такой же со мной ...? Так раздражает ..
Arst

Несмотря на то, что выбранный ответ является очень подробным и честным, есть причина, по которой этот ответ набирает на порядок больше голосов
Павел Зденек

О да, есть причина - пользователи Mac. В windows страница другая. «Нечего показывать». Отмеченный ответ хоть как-то полезен.
Gangnus

37

Перейти к

Windows

Файл -> Настройки -> Сборка, выполнение, развертывание -> Инструменты сборки -> Gradle

макинтош

Предпочтение -> Сборка, выполнение, развертывание -> Инструменты сборки -> Gradle

и выберите Use default gradle wrapper.


1
Окна. Нечего выбирать.
Gangnus

2
Сначала вам нужно сначала открыть проект.
Raptor

А в Linux это то же самое, что и в Windows: Файл -> Настройки -> Сборка, Выполнение, Развертывание -> Инструменты сборки -> Gradle. Вы можете отредактировать свой ответ и написать «Windows / Linux».
lenooh

18

Моя проблема в том, что весь файл build.setting был занят cannot be applied to '(groovy.lang.Closure)'предупреждающими сообщениями, а не с какой-либо конкретной переменной.

Я пробовал все решения, предоставленные другими, но ни одно из них не работает для меня. Я закончил эти шаги, и это работает как шарм. Если вы столкнулись с той же проблемой, попробуйте.

  1. Открытие и редактирование файла: yourproject/gradle/wrapper/gradle-wrapper.properties. Отредактируйте контент, чтобы обновить версию распространения gradle, как показано на изображении ниже, затем сохраните.
  2. Удалить эту папку: yourproject/.gradle.
  3. Нажмите Sync project with gradle files, и все готово.

введите описание изображения здесь


1
Нет необходимости удалять каталог yourproject / .gradle. Если вы решите это сделать, обязательно сохраните все сделанные вами настройки, например, добавление файла gradle.properties с org.gradle.daemon = true (обычная оптимизация). Однако вы можете просто перестроить, и оболочка gradle загрузит новую версию, указанную в distributionUrl, вместе со старыми версиями. Каталоги более старых версий могут оставаться в каталоге gradle вашего проекта.
Марк МакКлелланд

Обновление версии Gradle gradle-wrapper.propertiesрешило мою проблему. Спасибо!
BVB

18

Если вы уже используете «обертку gradle по умолчанию», и это не помогает:

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

Если это тоже не помогает, попробуйте в 2 шага:

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

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

После перезапуска предупреждение должно исчезнуть.

(Для меня это сработало и для Android Studio, и для IntelliJ Idea)


Работал у меня. Единственное, на что следует обратить внимание: если вы используете свой собственный gradle вместо связанного, вам также необходимо удалить его .gradleв своем домашнем каталоге.

1
Просто выполнение 2) инструкции сработало для меня. Спасибо!!
manolodewiner

2
проработало ... 5 секунд. тогда я снова получил ту ошибку.
Яр

Это немного расстраивает, насколько плохо в последнее время IntelliJ получил анализ проектов должным образом. Раньше это было его сильной стороной ... теперь кажется, что он спотыкается о малейшей вещи.
smaudet

4

Я вошел в настройки, чтобы попробовать один из других ответов, когда заметил предупреждение о том, что мой gradleдомашний каталог был неправильным. Итак, я открыл файловый браузер и выбрал более новую gradleверсию, и все ошибки исчезли. Изображение показано ниже.

введите описание изображения здесь


1

Бьюсь об заклад, проблема совершенно не связана с тем фрагментом кода, который выдает предупреждения, скорее всего, это ваш файл proguard. В моем коде было следующее, и я получил такое же предупреждение:

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

Комментируя runProguard false, все мои проблемы уйдут, поймите :)


Дэниел Уилсон. Поможет ли вместо этого перейти runProguardна minifyEnabled? Более подробная информация представлена здесь
Сергей Н.

1

У меня такая же проблема в android studio 2.2 , у меня работает:

оригинал:

android {
...
}

dependencies {
...
}

перейти dependenciesв android:

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

1

Я решил проблему в Android Studio, объявив кеш недействительным и перезапустив его.

File-> Invalidate Caches / Restart..

введите описание изображения здесь


1

Я столкнулся с аналогичной проблемой в IntelliJ для проекта Kotlin. Похоже, проблема заключалась в том, что в моем проекте, хотя он был настроен на использование JDK 8, язык и версии API каким-то образом были установлены на 1.3. См. «Настройки проекта»> «Аспекты». В моем случае я поставил галочку «использовать настройки проекта», но ручная установка их для каждого аспекта также может работать.


0
  1. Закройте проект (Файл / Закрыть проект),
  2. Выберите «Открыть существующий проект Android Studio» в меню «Пуск» и выберите папку, содержащую ваш проект Android.

Эта работа для меня.


0

Файлы Gradle можно сделать явными в нескольких местах, чтобы избежать таких ошибок. Например, изменение

configurations {

в

project.configurations {

или

task {
    description 'foo'

в

task {
    setDescription 'foo'

0

Чтобы решить эту проблему, просто закройте проект, затем выберите «Открыть существующий проект Android Studio» в меню «Пуск» и выберите папку, содержащую ваш проект Android. Будьте осторожны , выбирайте папку , а не файл проекта .iml.


0

Вырежьте, а затем вставьте "buildTypes" в то же место в разделе "android" и повторно синхронизируйте (обновите) проект.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.