'dependencies' tidak dapat diterapkan ke '(groovy.lang.Closure)'

121

Saya tidak dapat memperbaiki kesalahan ini:

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

Ini file gradle saya:

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
    }
 }
Ashwani Kottapalli
sumber
1
Saya cukup yakin ini sangat terkait dan seperti yang disarankan oleh jawaban saya di sana, saya pikir penandaan kesalahan adalah bug sehingga ada perbedaan solusi. stackoverflow.com/questions/29133601/… Bukan berarti jawaban teratas di sini tidak membuat beberapa poin umum yang sangat valid tentang skrip build gradle "saat ini" Anda
Seb Andraos

Jawaban:

22

Berdasarkan apa yang dihasilkan Android Studio, Anda perlu memiliki file proyek tingkat atas build.gradle, dan satu lagi untuk aplikasi Anda build.gradle.

Tingkat terbaik:

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

Tingkat aplikasi:

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

Tetapi bahkan tanpa semua itu, masalah Anda adalah Anda memiliki konfigurasi plugin di dependenciesdalam Anda android.

android {
    dependencies {
    }
}

hapus dependenciesblok kosong itu .

EDIT: Saya juga mulai mendapatkan kesalahan ini dengan Android Studio terbaru, yang harus saya lakukan hanyalah menambahkan versi plugin Gradle yang lebih baru, dan 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()
    }
}
EpicPandaForce
sumber
11
Saya melakukan masalah yang masih sama :(
Ashwani Kottapalli
Sejujurnya, saya pikir Anda harus memperbaiki kutipan tambahan dan spasi di dependensi Crouton, Universal-Image-Loader, dan googleplayServices Anda. Anda sebaiknya hanya menggunakan sebagian dari Layanan Google Play, juga menurut developer.android.com/google/play-services/setup.html
EpicPandaForce
ini tidak berfungsi ... bisakah kamu memberiku id fb atau yang lainnya ... jadi kita bisa berolahraga? silahkan?
Ashwani Kottapalli
... dalam hal ini, saya tidak tahu apa bug Anda. :( terakhir kali ini terjadi pada saya, plugin android dan gradle saya sudah usang, dan saya menggunakan jenis konfigurasi yang tidak lagi ada
EpicPandaForce
1
Tergantung pada apakah Anda menggunakan Command Line atau IDE. Dan jika IDE, lalu IDE apa.
EpicPandaForce
247

Anda dapat pergi ke Preferensi dan memilih "gunakan pembungkus gradle default" lalu buat ulang proyek. Ini bekerja dengan baik untuk saya: masukkan deskripsi gambar di sini

codingpuss
sumber
4
Adakah yang punya penjelasan mengapa ini terjadi?
balapan
1
Sepertinya setelah memperbarui dari 1.4 ke 1.5, pengaturan ini mendapat "reset" untuk menggunakan distribusi lokal sebagai gantinya di mesin saya. Jawaban ini pasti menyelesaikan masalah.
tampak lucu.
3
Pada versi 143.2532994 masalah ini tampaknya terjadi lagi ... ada orang yang sama dengan saya ...? Sangat menjengkelkan ..
Arst
Meskipun jawaban yang dipilih sangat rumit dan jujur, ada alasan mengapa jawaban ini memiliki urutan besarnya lebih banyak suara positif
Pavel Zdenek
Oh, ya, ada alasannya - pengguna mac. Di windows, halamannya berbeda. "Tidak ada yang bisa ditampilkan". Jawaban yang ditandai setidaknya berguna.
Gangnus
37

Pergi ke

Windows

File -> Pengaturan -> Build, Execution, Deployment -> Build Tools -> Gradle

Mac

Preferensi -> Build, Execution, Deployment -> Build Tools -> Gradle

dan pilih Gunakan pembungkus gradle default

Mark Pazon
sumber
1
Windows. Tidak ada yang bisa dipilih.
Gangnus
2
Pertama Anda harus membuka proyek terlebih dahulu.
Raptor
Dan di Linux sama seperti di Windows: File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle. Anda dapat mengedit jawaban Anda dan menulis "Windows / Linux".
lenooh
18

Masalah saya adalah bahwa seluruh file build.setting ditempati dengan cannot be applied to '(groovy.lang.Closure)'pesan peringatan alih-alih terjadi pada variabel tertentu.

Saya telah mencoba semua solusi yang diberikan oleh orang lain tetapi tidak ada yang berhasil untuk saya. Saya akhirnya melakukan langkah-langkah ini kemudian berfungsi seperti pesona. Jika Anda mengalami masalah yang sama, cobalah.

  1. Buka dan edit berkas: yourproject/gradle/wrapper/gradle-wrapper.properties. Edit konten untuk memperbarui versi distribusi gradle seperti yang ditunjukkan pada gambar di bawah ini lalu simpan.
  2. Hapus folder ini: yourproject/.gradle.
  3. Klik Sync project with gradle files, maka Anda siap melakukannya.

masukkan deskripsi gambar di sini

Arst
sumber
1
Tidak perlu menghapus direktori proyek / .gradleAnda. Jika Anda memilih untuk melakukannya, pastikan untuk menyimpan kustomisasi yang Anda buat di sana, seperti menambahkan file gradle.properties dengan org.gradle.daemon = true (pengoptimalan umum). Namun, Anda cukup membangun kembali, dan gradle wrapper akan mengunduh versi baru yang ditentukan di distributionUrl, bersama dengan versi yang lebih lama. Tidak masalah jika direktori versi lama tetap berada di direktori gradle proyek Anda.
Mark McClelland
Memperbarui versi gradle dalam gradle-wrapper.propertiesmemecahkan masalah saya. Terima kasih!
BVB
18

Jika Anda sudah menggunakan "default gradle wrapper" dan tidak membantu:

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

Jika itu juga tidak membantu coba dalam 2 langkah:

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

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

Setelah memulai ulang peringatan akan hilang.

(Bagi saya itu berhasil dan untuk Android Studio dan untuk IntelliJ Idea)

Andrey
sumber
Bekerja untuk saya. Satu-satunya hal yang perlu diperhatikan adalah: Jika Anda menggunakan gradle Anda sendiri dan bukan yang dipaketkan, Anda juga harus menghapus .gradledi direktori home Anda.
1
Hanya melakukan 2) instruksi berhasil untuk saya. Terima kasih!!
manolodewiner
2
bekerja ... selama 5 detik. lalu saya mendapatkan kesalahan itu lagi.
Yar
Agak frustasi betapa buruknya IntelliJ baru-baru ini dengan mengurai proyek dengan benar. Ini dulu keahliannya ... sekarang rasanya tersandung pada hal terkecil.
smaudet
4

Saya masuk ke preferensi untuk mencoba salah satu jawaban lain ketika saya melihat peringatan bahwa gradledirektori home saya salah. Jadi saya membuka browser file dan memilih gradleversi yang lebih baru , dan semua kesalahan hilang. Gambar di bawah ini.

masukkan deskripsi gambar di sini

menjulur
sumber
1

Saya yakin Anda masalahnya sama sekali tidak terkait dengan potongan kode yang memberi Anda peringatan, kemungkinan besar itu file proguard Anda. Saya memiliki yang berikut di kode saya dan mendapat peringatan yang sama:

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

Dengan berkomentar runProguard false, semua masalah saya hilang, cari tahu :)

Daniel Wilson
sumber
Daniel Wilson apakah itu membantu jika Anda berubah runProguardmenjadi minifyEnabledgantinya? Info lebih lanjut disediakan di sini
Sergii N.
1

Saya memiliki masalah yang sama di Android Studio 2.2, ini bekerja untuk saya:

asli:

android {
...
}

dependencies {
...
}

bergerak dependenciesdi android:

android {
...
   dependencies {
   ...
   }
}
Yakami
sumber
1

Saya memecahkan masalah di Android Studio dengan Memvalidasi cache dan memulai ulang.

File-> Invalidate Caches / Restart..

masukkan deskripsi gambar di sini

ahmadalibaloch.dll
sumber
1

Saya mengalami masalah yang mirip dengan ini di IntelliJ untuk proyek Kotlin. Sepertinya masalahnya adalah bahwa dalam proyek saya, meskipun telah diatur untuk menggunakan JDK 8, bahasa dan versi API entah bagaimana disetel ke 1.3. Lihat Preferensi Proyek> Faset. Dalam kasus saya, saya mencentang "gunakan setelan proyek", tetapi menyetelnya secara manual per faset juga dapat berfungsi.

Tim Keating
sumber
0
  1. Tutup proyek (File / Tutup proyek),
  2. Pilih "Buka proyek Android Studio yang sudah ada" di menu mulai dan pilih folder yang berisi proyek Android Anda.

Ini bekerja untuk saya.

zerob13
sumber
0

File Gradle dapat dibuat eksplisit di beberapa tempat untuk menghindari kesalahan seperti itu. Misalnya Perubahan

configurations {

untuk

project.configurations {

atau

task {
    description 'foo'

untuk

task {
    setDescription 'foo'
tkruse
sumber
0

Untuk memperbaiki masalah, cukup tutup proyek, lalu pilih "Buka proyek Android Studio yang sudah ada" di menu mulai dan pilih folder yang berisi proyek Android Anda. Hati-hati, pilih foldernya , bukan file proyek .iml.

Webdma
sumber
0

Potong lalu tempel "buildTypes" di tempat yang sama di bagian "android" dan Proyek Sinkronisasi Ulang (refresh)

Andrey
sumber