ไม่สามารถใช้ 'dependencies' กับ '(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 "ปัจจุบัน" ของคุณ
Seb

คำตอบ:


22

ขึ้นอยู่กับสิ่ง Android สตูดิโอสร้างคุณจะต้องมีไฟล์โครงการระดับบนสุด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กำหนดค่าandroidปลั๊กอินภายใน

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
ฉันยังคงมีปัญหาเดิม :(
Ashwani Kottapalli

พูดตามตรงฉันคิดว่าคุณควรแก้ไขเครื่องหมายคำพูดพิเศษและช่องว่างในการอ้างอิง Crouton, Universal-Image-Loader และ googleplayServices คุณควรใช้เพียงบางส่วนของบริการ Google Play ตามที่developer.android.com/google/play-services/setup.html
EpicPandaForce

มันใช้งานไม่ได้ ... คุณช่วยให้ fb id หรืออื่น ๆ ได้ไหม ... เพื่อให้เราออกกำลังกายได้? กรุณา?
Ashwani Kottapalli

... ในกรณีนั้นฉันไม่รู้ว่าจุดบกพร่องของคุณคืออะไร :( ครั้งที่แล้วสิ่งนี้เกิดขึ้นกับฉันปลั๊กอิน android และ gradle ของฉันล้าสมัยและฉันใช้ประเภท config ที่ไม่มีอยู่แล้ว
EpicPandaForce

1
ขึ้นอยู่กับว่าคุณกำลังใช้ Command Line หรือ IDE และถ้า IDE แล้ว IDE อะไร
EpicPandaForce

247

คุณสามารถไปที่ Preferences และเลือก "use default gradle wrapper" จากนั้นสร้างโปรเจ็กต์ใหม่ มันทำงานได้ดีสำหรับฉัน: ใส่คำอธิบายภาพที่นี่


4
ใครมีคำอธิบายว่าทำไมถึงเกิดขึ้น?
racs

1
ดูเหมือนว่าหลังจากอัปเดตจาก 1.4 เป็น 1.5 แล้วการตั้งค่านี้ได้รับการ "รีเซ็ต" เพื่อใช้การกระจายในเครื่องแทนบนเครื่องของฉัน คำตอบนี้ช่วยแก้ปัญหาได้อย่างแน่นอน
สนุกสนาน

3
ตั้งแต่รุ่น 143.2532994 ปัญหานี้ดูเหมือนจะเกิดขึ้นอีกครั้ง ... มีใครเหมือนกันกับฉันบ้าง ... ? น่ารำคาญดังนั้น ..
ARST

แม้ว่าคำตอบที่เลือกจะมีความซับซ้อนและซื่อสัตย์มาก แต่ก็มีเหตุผลว่าทำไมคำตอบนี้จึงมีลำดับความสำคัญในการโหวตมากกว่า
Pavel Zdenek

โอ้ใช่มีเหตุผล - ผู้ใช้ mac บน windows หน้าจะแตกต่างกัน "ไม่มีอะไรจะแสดง". คำตอบที่ทำเครื่องหมายไว้อย่างน้อยก็มีประโยชน์
Gangnus

37

ไปที่

ของ windows

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

Mac

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

และเลือกใช้กระดาษห่อหุ้มไล่สีเริ่มต้น


1
ของ windows ไม่มีอะไรให้เลือก
Gangnus

2
ก่อนอื่นคุณต้องเปิดโครงการก่อน
Raptor

และบนLinuxจะเหมือนกับ Windows: File -> Settings -> Build, Execution, Deployment -> Build Tools -> 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 wrapper จะดาวน์โหลดเวอร์ชันใหม่ที่ระบุใน distributionUrl ควบคู่ไปกับเวอร์ชันที่เก่ากว่า ไดเร็กทอรีเวอร์ชันเก่าจะยังคงอยู่ในไดเร็กทอรี gradle ของโปรเจ็กต์ของคุณได้ดี
Mark McClelland

การอัปเดตเวอร์ชัน gradle ในการgradle-wrapper.propertiesแก้ไขปัญหาของฉัน ขอบคุณ!
BVB

18

หากคุณใช้ "เสื้อคลุมไล่ระดับเริ่มต้น" อยู่แล้วและไม่ได้ช่วย:

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

ฉันพนันได้เลยว่าปัญหานี้ไม่เกี่ยวข้องกับส่วนของรหัสที่ให้คำเตือนคุณโดยสิ้นเชิงน่าจะเป็นไฟล์โปรการ์ดของคุณ ฉันมีสิ่งต่อไปนี้ในรหัสของฉันและได้รับคำเตือนแบบเดียวกัน:

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

โดยการแสดงความคิดเห็นrunProguard falseปัญหาทั้งหมดของฉันจะหายไปไปคิด :)


Daniel Wilson ช่วยได้ไหมถ้าคุณเปลี่ยนrunProguardเป็นminifyEnabledแทน? ดูข้อมูลเพิ่มเติมได้ที่นี่
Sergii N.

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



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.