buildTypes tidak dapat diterapkan ke groovy.lang.Closure

241

Saya mendapatkan peringatan ini di file gradle proyek saya:

Peringatan: (16, 5) 'buildTypes' tidak dapat diterapkan ke '(groovy.lang.Closure <com.android.build.gradle.internal.dsl.BuildType>)'

Bagian buildTypes saya adalah:

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

Saat ini saya menggunakan Android Studio 1.1.0, compileSdkVersion 22, buildToolsVersion 22.0.0, dan targetSdkVersion 22. Saya mencoba mundur ke 21 tetapi masih mendapatkan peringatan.

Apa yang menyebabkan peringatan ini & bagaimana cara memperbaikinya?

Jim Vitek
sumber
Sudahkah Anda menerapkan plugin: 'com.android.aplication' atau 'com.android.library'?
Kirill Boyarshinov
@ Kirill: com.android.application
Jim Vitek

Jawaban:

471

Bagi saya masalahnya tidak diselesaikan dengan menerapkan solusi di atas. Sebaliknya saya harus pergi ke pengaturan dalam Android Studio dan pilih "Use gradle wrapper":

Di Android Studio pilih: File \ Settings \ Build, Execution, Deployment \ Build tools \ Gradle

(Pengguna Mac: Android Studio \ Preferences ... \ Build, Execution, Deployment \ Build tools \ Gradle )

Mark: Gunakan pembungkus gradle default (default)

Ini menghapus semua peringatan 'tidak dapat diterapkan pada' (groovy.lang.Closure ') dalam file build.

Peter
sumber
2
Ini adalah jawaban yang benar, masalah terjadi ketika saya membuka proyek di Windows dan kemudian di Linux (via Dropbox) mengubah lokasi distribusi gradle, jadi lebih baik menggunakan pembungkus gradle default.
Rodrigo Direito
1
Saya memiliki masalah yang sama. Rekan satu tim saya bekerja di mesin windows. Mengambil pembaruan memberi saya masalah ini
chip
@ Air Saya sudah mengedit jawaban asli karena ini (saya sudah mencari beberapa saat untuk ini juga: D). Setelah peer review, akan tersedia :) Lihat: i.imgur.com/BtCijIW.png
StefMa
Entah bagaimana 1.3.1 AS di Mac mengatur ulang pengaturan ini pada Build -> Clean. Pengaturan itu kembali membangun perbaikan. Terima kasih!
Den Drobiazko
11
Sesuatu yang bodoh dengan Android Studio, itu mulai menunjukkan saya peringatan ketika saya membuat dengan membangun target 22 dan buildToolsVersion 22.0.1 .... Bagi saya 'Gunakan pembungkus gradle default' sudah ditandai sebagai default (AS 2.0 Beta) ... saya hanya potong blok kode saya dan tempel di tempat yang sama (tidak ada perubahan kode, tidak ada perubahan konfigurasi) .... peringatan telah dihapus!
Umair
127

Saya memiliki masalah yang sama. Memindahkan buildTypes sebagai entri terakhir di bagian android bekerja untuk saya.

android {
    ...
    buildTypes {
    }
}
dorr
sumber
2
Aneh bahwa posisinya harus membuat perbedaan tetapi ternyata memang ada bedanya.
Jason Crosby
Ini juga berfungsi untuk saya. Apakah Anda punya ide bagaimana cara kerjanya? Terima kasih.
myNameCoad
4
Ini sepertinya bekerja untuk saya juga, tetapi kemudian saya membuka kancing perubahan itu dan menyalin / menempel blok itu di tempat yang sama dan peringatan itu juga hilang. Kemudian saya mencoba untuk membatalkan semuanya dan menutup dan membuka kembali proyek untuk meniru peringatan itu, tetapi sudah hilang. Saya pikir itu hanya salah satu dari orang-orang macam peringatan.
elliptic1
Bagi saya, hampir semua peringatan dihapus oleh jawaban Peter, kecuali untuk peringatan tentang buildTypes. Kemudian, solusi ini berhasil untuk yang terakhir!
hata
76

1 Potong dan Tempel "buildTypes" pada posisi yang sama di bagian "android"

2 Sinkronisasi Ulang Proyek

Luca Barillà
sumber
16

Untuk mengatasi masalah ini, di Android Studio Anda buka File -> Pengaturan . Dalam pengaturan pilih Build, Execution, Deployment -> Build Tools -> Gradle dan pilih opsi "Use default gradle wrapper (recommended)" .

Setelah membangun kembali build.gradle Anda akan baik-baik saja.

Ivan V
sumber
1
Ini adalah jawaban yang benar ATAU Anda dapat memilih lokasi gradle yang tepat
batal pointer
1
betapa berbedanya maka jawaban @ Peter.
AndyW
13

Jika tidak ada opsi di atas yang berfungsi, maka lakukan Mengikuti

  1. Ubah proyek ke Projectperspektif dalam "Project Explorer".
  2. Hapus .gradledan buildfolder.
  3. Klik File -> Batalkan Cadangan / Mulai Ulang ... -> Validasi dan Mulai Ulang
  4. Sekarang bekerja, senang coding.
Atif Farrukh
sumber
7

Saya berhasil menyelesaikan masalah saya dengan hanya melakukan ini: Klik "File" lalu pilih "Valid Cache / Restart

Fred
sumber
6

Cara termudah untuk memperbaiki masalah Gradle ini adalah menciptakan kembali proyek untuk membiarkan Android Studio mengkonfigurasi ulang Gradle.

Cukup pilih "Buka proyek Android Studio yang ada" dan pilih folder proyek Anda.

Lebih detail di sini .

AleFranz
sumber
4

ini bekerja untuk saya:

buildTypes.debug {
    ext.enableCrashlytics = false
}

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

Masalahnya muncul ketika Anda mengimpor proyek ke lingkungan Anda dan plugin Gradle diinstal di lokasi yang berbeda dari yang ada di aslinya. Anda hanya perlu menunjukkan di mana instalasi Gradle Anda.

Memindahkan buildTypes atau defaultConfig atau apa pun di antara yang lain bukanlah solusi yang lengkap

Chisko
sumber
Beginilah akhirnya saya menyelesaikan masalah ini ... 1. Navigasikan ke Android Studio ke: File | Pengaturan | File | Pengaturan | Bangun, Eksekusi, Penempatan | Alat Bangun | Gradle 2. Pastikan ini tidak dicentang, meskipun disarankan untuk tetap ... Gunakan Default Gradle Wrapper (disarankan) 3. dan yang ini dicentang ... Gunakan distribusi gradle lokal 4. dan Gradle Home diatur ke ini, dengan kemungkinan gradle-nn ... C: / Program Files / Android / Android Studio1 / gradle / gradle-2.4 Anda mungkin harus me-restart Android Studio, membangun kembali proyek, dll, tetapi masalahnya selesai.
Mick
3

Masalah yang dihadapi adalah bahwa pengaturan Android Studio Anda yang mungkin Anda impor saat upgrade, masih mengarah ke gradle-2.4 atau versi lain dari yang diharapkan oleh Android Studio 1.5.

Untuk mengatasi masalah ini, Anda harus membuka Pengaturan dan pergi ke Build, Execution, Deployment> Build Tools> Gradle dan ubah jalur home distribusi gradle lokal Anda atau pilih pembungkus gradle default.

Terapkan dan sinkronkan ulang proyek Anda.

anthonymonori
sumber
2

Saya memiliki masalah yang sama. Saya memulai proyek baru dan berhasil, jadi saya hanya menyalin file build.gradle. Dalam kasus saya satu-satunya perbedaan adalah kurangnya bagian compileOptions. Saya menghapusnya dari proyek saya, menyinkronkan gradle, memasukkan kembali bagian compileOptions dan kemudian menyinkronkan gradle lagi.

greywolf82
sumber
2

Di Android Studio Anda, buka File -> Settings. Selanjutnya pilih Build, Execution, Deployment -> Build Tools -> Gradle dan pilih "Use default gradle wrapper (disarankan)".

Membangun kembali proyek.


sumber
2

Dalam kasus saya buildTypesbagian saya di atas productFlavorsbagian saya . Saling menukar posisi mereka menyingkirkan peringatan:

SEBELUM:

buildTypes {

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

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

SETELAH:

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

 buildTypes {

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

Saya menggunakan Android Studio 2.1.2 dengan konfigurasi berikut di bagian atas androidbagian saya :

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

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

Saya dulu mendapat peringatan ini, setelah saya memperbarui Android Studio.

Ketika saya pergi ke Pengaturan >> Alat Bangun >> Gradle Saya menemukan jalur Local Gradle tidak valid, karena versi gradle juga diperbarui dari 2,6 ke 2,8.

Memperbaiki jalur baru dan menyinkronkan kembali gradle menghapus peringatan.

Cara lain adalah menggunakan gradlewrapper.

IronBlossom
sumber
0

Mengubah distributionUrl = https: //services.gradle.org/distributions/gradle-2.1-bin.zip menjadi gradle-2.1-all.zip di gradle-wrapper.properties memecahkan masalah bagi saya.

Kangura
sumber
0

EDIT: Beginilah akhirnya saya memecahkan masalah ini ...

  1. Navigasi di Android Studio ke:

    File | Pengaturan | Bangun, Eksekusi, Penempatan | Alat Bangun | Gradle

  2. Pastikan ini tidak dicentang, meskipun demikian disarankan untuk tetap ...

    Gunakan Default Gradle Wrapper (disarankan)

  3. dan yang ini dicentang ...

    Gunakan distribusi gradle lokal

  4. dan bahwa Gradle Home diatur untuk ini, dengan kemungkinan gradle-nn ...

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

Anda mungkin harus memulai ulang Android Studio, membangun kembali proyek, dll, tetapi masalahnya selesai.

Akhir dari EDIT.

Saya memposting ini untuk memberi tahu orang lain yang baru dalam masalah ini untuk mengabaikannya. Proyek ini berjalan dengan sempurna. Ini hanyalah sebuah bug dalam sistem build, semoga segera diperbaiki. Saya mengirim komentar dan memilih di sini di mana itu lagi merupakan topik aktif ...

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

Setelah mencoba, tidak berhasil, saran di tiga utas berikut, saya membuat ulang seluruh proyek dari awal. Saya memulai proyek Android Studio baru, menyalin semua lib asli dan file utama ke dalamnya mengabaikan semua file yang dihasilkan oleh sistem build dan membangun kembali proyek. Semuanya baik-baik saja kecuali semua peringatan "tidak dapat diterapkan pada peringatan '(groovy.lang.Clage)'" muncul kembali dengan pembalasan. Kemudian saya membaca saran-saran ini lagi hanya untuk memastikan bahwa saya tidak mengabaikan sesuatu.

1 buildTypes tidak dapat diterapkan ke groovy.lang.Closure pergi ke pengaturan dalam Android Studio dan pilih "Use gradle wrapper": Di Android Studio pilih: File \ Settings \ Build, Execution, Deployment \ Build tools \ Gradle Mark: Gunakan default gradle wrapper (default) Ini menghapus semua peringatan 'tidak dapat diterapkan ke' (groovy.lang.Closure ') dalam file build.

2 'dependensi' tidak dapat diterapkan ke '(groovy.lang.Closure)' Buka dan edit file: proyek Anda / gradle / wrapper / gradle-wrapper.propertie. Edit konten seperti gambar di bawah ini lalu simpan. Hapus folder ini: yourproject / .gradle. Klik Sinkronkan proyek dengan file gradle, maka Anda siap melakukannya.

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

Konfigurasi saya adalah: Android Studio 1.3, compileSdk Version 22, buildTools Version "22.0.1"

Mick
sumber
0

hapus folder gradle di bawah folder aplikasi dan proyek sinkronisasi ulang

Alex Perevozchykov
sumber
0

Yang harus saya lakukan untuk menghapus

productFlavors {
}

Dari

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

dan peringatan itu hilang.

Penampilan akhir seperti ini

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

Mengubah buildToolsVersiondari

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2" 
.. 
}

untuk

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1" 
.. 
}

bekerja untukku.

Gergana Tsvetkova
sumber