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 і вибрати "Використовувати оболонку градації":

У Android Studio виберіть: Файл \ Налаштування \ Збір, Виконання, Розгортання \ Інструменти побудови \ Gradle

(Користувачі Mac: Android Studio \ Налаштування ... \ Створення, виконання, розгортання \ Інструменти побудови \ Gradle )

Позначити: використовувати обгортку gradle за замовчуванням (за замовчуванням)

Вилучені всі "не можна застосувати до попереджень" (groovy.lang.Closure ") у файлах збірки.


2
Це правильна відповідь, проблема виникла, коли я відкрив проект у Windows, а потім у Linux (через Dropbox), він змінив місце розташування розподілу gradle, тому просто краще використовувати обгортку gradle за замовчуванням.
Родріго Редіто

1
У мене було те саме питання. Мій товариш по команді працює на машині Windows. Отримані оновлення ставлять мені це питання
чіп

@Waterbear Я відредагував оригінальну відповідь через це (я певний час теж шукав це: D). Після експертного огляду вона буде доступна :) Дивіться: i.imgur.com/BtCijIW.png
StefMa

Якось 1.3.1 AS на Mac скидає цей параметр у Build -> Clean. Встановлення зворотного виправлення збірки. Дякую!
Den Drobiazko

11
Щось дурне з Android Studio, воно почало показувати мені попередження, коли я зробив ціль збірки 22 та buildToolsVersion 22.0.1 .... Для мене "Використовувати обгортку gradle за замовчуванням" вже було позначено як за замовчуванням (AS 2.0 Beta) ... я просто вирізати мій блок коду та вставити на одне і те саме місце (не змінюється код, не змінюється конфігурація) .... попередження видалено!
Умаїр

127

У мене було те саме питання. Переміщення buildTypes як останнього запису в розділі андроїд працювало на мене.

android {
    ...
    buildTypes {
    }
}

2
Як не дивно, що його позиція має змінити ситуацію, але, мабуть, так і є.
Джейсон Кросбі

Це працює і для мене. Чи є у вас ідеї, як це працює? Дякую.
myNameCoad

4
Це, здавалося, працює і для мене, але потім я скасував ці зміни і скопіював / вставив цей блок у те саме місце, і попередження також відійшло. Тоді я спробував скасувати все це і закрити та повторно відкрити проект, щоб повторити попередження, але його вже не було. Я думаю, що це лише одне з таких видів попереджень.
elliptic1

Для мене майже попередження були очищені у відповідь Петра, за винятком попередження о buildTypes. Тоді це рішення спрацювало останнє!
хата


16

Щоб вирішити цю проблему, у своїй Android Studio перейдіть у меню Файл -> Налаштування . В налаштуваннях вибрати збірки, виконання, розгортання -> Build Tools -> Gradle і виберіть "Використовувати по замовчуванням Gradle обгортка (рекомендується)" варіант.

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


1
Це правильна відповідь АБО ви можете вибрати правильне розташування градації
недійсний покажчик

1
як його відрізняється від відповіді @ Петра.
AndyW

13

Якщо жоден із перерахованих вище варіантів не працює, виконайте наступне

  1. Змініть проект на Projectперспективу у "Провіднику проектів".
  2. Видалення .gradleта buildпапки.
  3. Клацніть Файл -> Недійсні кеші / Перезавантажте ... -> Недійсні та перезапустіть
  4. Тепер його робоче, щасливе кодування.

7

Мені вдалося вирішити свою проблему, просто зробивши це: натисніть «Файл», а потім виберіть «Недійсний кеш / Перезапуск


6

Найпростіший спосіб вирішити проблеми з Gradle - це відтворення проекту, який дозволить Android Studio переконфігурувати Gradle.

Просто виберіть "Відкрити існуючий проект Android Studio" та виберіть папку свого проекту.

Детальніше тут .


4

це працювало для мене:

buildTypes.debug {
    ext.enableCrashlytics = false
}

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

4

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

Переміщення типів buildType або defaultConfig або будь-якого іншого між собою не є повноцінним рішенням


Ось як я нарешті вирішив цю проблему ... 1. Перейдіть в Android Studio на: Файл | Налаштування | Файл | Налаштування | Збірка, виконання, розгортання | Інструменти побудови | Gradle 2. Переконайтесь, що це не встановлено, незважаючи на те, що рекомендується зберігати ... Використовуйте програму Gradle Wrapper за замовчуванням (рекомендується) 3. і щоб це було перевірено ... Використовуйте локальний розподіл gradle 4. і що для Gradle Home встановлено значення це, можливо, з пізнішими gradle-nn ... C: / Файли програми / Android / Android Studio1 / gradle / gradle-2.4 Можливо, вам доведеться перезапустити Android Studio, відновити проект тощо, але проблема вирішена.
Мік

3

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

Щоб вирішити цю проблему, слід відкрити " Налаштування" та перейти до " Створення, виконання", "Розгортання"> "Інструменти збирання"> "Gradle" та змінити домашній шлях вашого локального розподілу gradle або вибрати обгортку gradle за замовчуванням.

Застосовуйте та повторно синхронізуйте проект.


2

У мене була така ж проблема. Я запустив новий проект, і він спрацював, тому я просто скопіював файл build.gradle. У моєму випадку єдиною різницею була відсутність розділу збиранняОпції. Я видалив його зі свого проекту, синхронізував gradle, знову вставив розділ compileOptions і потім знову синхронізував gradle.


2

У студії Android перейдіть у меню Файл -> Налаштування. Далі виберіть «Збір», «Виконання», «Розгортання» - «Інструменти збирання» -> Gradle та виберіть «Використовувати обгортку 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.

Виправлено новий шлях і повторною синхронізацією градації видалено попередження.

Інший спосіб - використання gradlewrapper.


0

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


0

EDIT: Це, як я нарешті вирішив цю проблему ...

  1. Перейдіть у Android Studio, щоб:

    Файл | Налаштування | Збірка, виконання, розгортання | Інструменти побудови | Градле

  2. Переконайтеся, що це не встановлено, незважаючи на те, що рекомендується зберігати ...

    Використовувати програму Gradle Wrapper (рекомендується)

  3. і що це перевірено ...

    Використовуйте місцевий розподіл градулей

  4. і що Gradle Home налаштований на це, можливо, пізніше gradle-nn ...

    C: / Файли програми / Android / Android Studio1 / gradle / gradle-2.4

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

Кінець EDIT.

Я публікую це, щоб порадити будь-кому, хто не знайомий з цією проблемою, ігнорувати її. Проект працює ідеально незалежно. Це досить просто помилка в системі збірки, сподіваємось, незабаром виправити. Я опублікував коментар і проголосував тут, де знову активна тема ...

https://code.google.com/p/android/isissue/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 типи зборки не можна застосувати до groovy.lang.Закриття перейдіть до налаштувань Android Studio та виберіть "Використовувати обгортку gradle": У Android Studio виберіть: Файл \ Налаштування \ Збірка, Виконання, Розгортання \ Інструменти побудови \ Gradle Позначення: Використовувати gradle за замовчуванням обгортка (за замовчуванням) Вилучені всі "не можна застосувати до попереджень" (groovy.lang.Closure ") у файлах збірки.

2 'залежності' не можна застосувати до '(groovy.lang.Closure)' Відкрити та редагувати файл: yourproject / gradle / wrapper / gradle-wrapper.propertie. Відредагуйте вміст, як зображено нижче, а потім збережіть. Видаліть цю папку: yourproject / .gradle. Клацніть проект «Синхронізувати» з файлами gradle, тоді вам добре піти.

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

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



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" 
.. 
}

працював на мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.