buildTypes нельзя применять к groovy.lang.Closure

241

Я получаю это предупреждение в файле проекта gradle:

Предупреждение: (16, 5) 'buildTypes' нельзя применить к '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)'

Мой раздел buildTypes:

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

В настоящее время я использую Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0 и targetSdkVersion 22. Я попытался вернуться к 21, но все еще получал предупреждение.

Что вызывает это предупреждение и как оно исправлено?

Джим Витек
источник
Вы применили плагин: «com.android.aplication» или «com.android.library»?
Кирилл Бояршинов
@Kirill: com.android.application
Джим Витек

Ответы:

471

Для меня проблема не была решена путем применения вышеуказанного решения. Вместо этого мне пришлось перейти к настройкам в Android Studio и выбрать «Использовать упаковку Gradle»:

В Android Studio выберите: Файл \ Настройки \ Сборка, Выполнение, Развертывание \ Инструменты сборки \ Gradle

(Пользователи Mac: Android Studio \ Настройки ... \ Сборка, Выполнение, Развертывание \ Инструменты сборки \ Gradle )

Пометить: использовать упаковщик по умолчанию (по умолчанию)

Это убрало все «нельзя применить к» (groovy.lang.Closure ') предупреждения в файлах сборки.

Питер
источник
2
Это правильный ответ, проблема возникла, когда я открыл проект в Windows, а затем в Linux (через Dropbox) он меняет расположение дистрибутива Gradle, так что лучше использовать оболочку Gradle по умолчанию.
Родриго Direito
1
Я была такая же проблема. Мой товарищ по команде работает на машине Windows. Получение обновлений дает мне эту проблему
чип
@Waterbear Из-за этого я отредактировал исходный ответ (я тоже некоторое время искал: D). После экспертной оценки она будет доступна :) См .: i.imgur.com/BtCijIW.png
StefMa
Каким-то образом 1.3.1 AS на Mac сбросил этот параметр на Build -> Clean. Установка его обратно исправляет сборку. Спасибо!
Ден Дробязко
11
Что-то глупо с Android Studio, он начал показывать мне предупреждение, когда я сделал с помощью build target 22 и buildToolsVersion 22.0.1 .... Для меня «Использовать упаковщик по умолчанию» уже было помечено как стандартное (AS 2.0 Beta) ... я просто вырезать мой блок кода и вставить в том же месте (без изменений кода, без изменений конфигурации) .... предупреждение было удалено!
Umair
127

Я была такая же проблема. Перемещение buildTypes как последней записи в разделе Android работало для меня.

android {
    ...
    buildTypes {
    }
}
жук
источник
2
Странно, что его позиция должна иметь значение, но, видимо, это так.
Джейсон Кросби
Это работает и для меня. У вас есть идеи, как это работает? Спасибо.
myNameCoad
4
Кажется, это тоже работает для меня, но затем я отменил эти изменения и скопировал / вставил этот блок в то же место, и предупреждение также ушло. Затем я попытался отменить все это, закрыть и заново открыть проект, чтобы повторить предупреждение, но оно исчезло. Я думаю, что это только одно из таких предупреждений.
elliptic1
Для меня почти предупреждения были очищены ответом Питера, за исключением предупреждения о buildTypes. Тогда это решение сработало для последнего!
хата
76

1 Вырежьте и вставьте «buildTypes» в той же позиции в разделе «Android»

2 Re Sync Project

Лука Барилла
источник
16

Чтобы решить эту проблему, в вашей Android Studio перейдите в Файл -> Настройки . В настройках выберите « Сборка, Выполнение, Развертывание» -> «Инструменты сборки» -> «Gradle» и выберите «Использовать упаковщик по умолчанию (рекомендуется)» .

После перестройки ваш build.gradle будет полностью в порядке.

Иван V
источник
1
Это правильный ответ ИЛИ вы можете выбрать правильное местоположение gradle
указатель void
1
чем отличается тогда @ ответ Питера.
AndyW
13

Если ни один из перечисленных выше вариантов не работает, выполните следующие действия.

  1. Измените проект на Projectперспективу в «Project Explorer».
  2. Удалить .gradleи buildпапки.
  3. Нажмите Файл -> Отменить кэш / перезапустить ... -> Отменить и перезапустить
  4. Теперь это работает, счастливое кодирование.
Атиф Фаррух
источник
7

Мне удалось решить мою проблему, просто сделав это: нажмите «Файл», затем выберите «Invalidate Caches / Restart».

Фред
источник
6

Самый простой способ исправить эту проблему - воссоздать проект, чтобы Android Studio перенастроил Gradle.

Просто выберите «Открыть существующий проект Android Studio» и выберите папку своего проекта.

Подробнее здесь .

AleFranz
источник
4

это сработало для меня:

buildTypes.debug {
    ext.enableCrashlytics = false
}

buildTypes.release {
    debuggable false
    zipAlignEnabled true
    minifyEnabled false
    signingConfig signingConfigs.release
}
serggl
источник
4

Проблема возникает, когда вы импортируете проект в вашу среду, и плагин Gradle установлен в другом месте, чем в оригинале. Вам просто нужно указать, где находится ваша установка Gradle.

Перемещение buildTypes или defaultConfig или что-либо между ними не является полным решением

Chisko
источник
Вот как я наконец решил эту проблему ... 1. Перейдите в Android Studio к: Файл | Настройки | Файл | Настройки | Сборка, выполнение, развертывание | Инструменты для сборки | Gradle 2. Убедитесь, что это не отмечено, несмотря на то, что рекомендуется сохранить ... Использовать по умолчанию Gradle Wrapper (рекомендуется) 3. и что этот флажок установлен ... Использовать локальное распределение Gradle 4. и что Gradle Home установлен на это, возможно, с более поздней версией gradle-nn ... C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4 Возможно, вам придется перезапустить Android Studio, перестроить проект и т. д., но проблема решена.
Мик
3

Проблема в том, что ваши настройки Android Studio, что вы, вероятно, импортировали при обновлении, все еще указывали на gradle-2.4 или некоторые другие версии, отличные от Android Studio 1.5.

Чтобы решить эту проблему, откройте « Настройки» и перейдите в « Построение, выполнение, развертывание»> «Инструменты сборки»> «Gradle» и измените домашний путь вашего локального дистрибутива Gradle или выберите оболочку Gradle по умолчанию.

Примените и повторно синхронизируйте ваш проект.

anthonymonori
источник
2

У меня такая же проблема. Я запустил новый проект, и он сработал, поэтому я просто скопировал файл build.gradle. В моем случае единственной разницей было отсутствие раздела compileOptions. Я удалил его из своего проекта, синхронизировал gradle, заново вставил раздел compileOptions и снова синхронизировал gradle.

greywolf82
источник
2

В вашей Android Studio зайдите в Файл -> Настройки. Далее выберите «Сборка, выполнение, развертывание -> Инструменты сборки -> Gradle» и выберите «Использовать упаковщик по умолчанию (рекомендуется)».

Перестроить проект.


источник
2

В моем случае мой buildTypesраздел был выше моегоproductFlavors раздела. Поменяясь местами, избавился от предупреждения:

ПЕРЕД:

buildTypes {

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

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

ПОСЛЕ:

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

 buildTypes {

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

Я использую Android Studio 2.1.2 со следующей конфигурацией в верхней части моего androidраздела:

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.xyz.abc"
        minSdkVersion 14
        targetSdkVersion 24
        //..etc
Таш Пемхива
источник
1

Раньше я получал это предупреждение после обновления Android Studio.

Когда я перешел в « Настройки» >> «Инструменты сборки»> «Gradle», я обнаружил, что путь к локальному Gradle недействителен, так как версия Gradle также была обновлена ​​с 2,6 до 2,8.

Исправлен новый путь и повторная синхронизация, Gradle удалил предупреждение.

Другой способ заключается в использовании gradlewrapper.

IronBlossom
источник
0

Изменение distributionUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip на gradle-2.1-all.zip в gradle-wrapper.properties решило проблему для меня.

kengura
источник
0

РЕДАКТИРОВАТЬ: Вот как я, наконец, решил эту проблему ...

  1. Перейдите в Android Studio, чтобы:

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

  2. Убедитесь, что это не проверено, несмотря на то, что рекомендуется сохранить ...

    Использовать Gradle Wrapper по умолчанию (рекомендуется)

  3. и что этот проверен ...

    Использовать локальное распределение Gradle

  4. и этот Gradle Home настроен на это, возможно, с более поздним gradle-nn ...

    C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4

Возможно, вам придется перезапустить Android Studio, перестроить проект и т. Д., Но проблема решена.

Конец РЕДАКТИРОВАНИЯ.

Я публикую это, чтобы посоветовать кому-то еще новичку в этой проблеме игнорировать ее. Проект работает идеально независимо. Это довольно простая ошибка в системе сборки, которая, надеюсь, будет исправлена ​​в ближайшее время. Я разместил комментарий и проголосовал здесь, где это снова активная тема ...

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

Попробовав неудачные предложения в следующих трех темах, я заново создал весь проект с нуля. Я запустил новый проект Android Studio, скопировал в него все исходные библиотеки и основные файлы, игнорируя все файлы, сгенерированные системой сборки, и перестроил проект. Все было хорошо, за исключением того, что все эти предупреждения «не могут быть применены к (groovy.lang.Closure)» вновь появились с мщением. Затем я повторил эти предложения еще раз, чтобы быть уверенным, что я что-то не упустил.

1 buildTypes нельзя применять к groovy.lang.Closure перейдите к настройкам в Android Studio и выберите «Использовать оболочку Gradle»: в Android Studio выберите: «Файл \ Настройки \ Построение, Выполнение, Развертывание \ Инструменты сборки \ Gradle Mark: Использовать Gradle по умолчанию» Оболочка (по умолчанию). Это удалило все предупреждения «нельзя применить к» (groovy.lang.Closure ') в файлах сборки.

2 «Зависимости» не могут быть применены к «(groovy.lang.Closure)» Откройте и отредактируйте файл: yourproject / gradle / wrapper / gradle-wrapper.propertie. Отредактируйте содержимое, как показано на рисунке ниже, затем сохраните. Удалите эту папку: ваш проект / .gradle. Нажмите «Синхронизировать проект с файлами Gradle», тогда все готово.

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

Моя конфигурация: Android Studio 1.3, compileSdk Версия 22, buildTools Версия "22.0.1"

Мик
источник
0

удалить папку Gradle в папке приложения и повторно синхронизировать проект

Алекс Перевозчиков
источник
0

Все, что мне нужно было сделать, чтобы удалить

productFlavors {
}

Из

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

и предупреждение ушло.

Окончательный вид был таким

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
Максимум
источник
0

Изменение buildToolsVersionот

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

в

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

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

Гергана Цветкова
источник