"bağımlılıklar", "(groovy.lang.Closure)" için uygulanamaz


121

Bu hatayı düzeltemiyorum:

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

Bu benim gradle dosyam:

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
Bunların birbiriyle çok ilişkili olduğundan oldukça eminim ve oradaki cevabımın önerdiği gibi, hata işaretlemenin bir hata olduğunu ve dolayısıyla çözümlerin eşitsizliğini düşünüyorum. stackoverflow.com/questions/29133601/… Bu, buradaki en iyi cevabın "mevcut" gradle oluşturma komut dosyanız hakkında çok geçerli bazı genel noktalar oluşturmadığını söylemez
Seb Andraos

Yanıtlar:


22

Android Studio'nun ürettiklerine bağlı olarak, üst düzey bir proje dosyasına build.gradleve uygulamanız için başka bir dosyaya ihtiyacınız vardır build.gradle.

Üst düzey:

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

Uygulama seviyesi:

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

Ama bütün bu olmadan, senin sorunun bir olması dependenciessizin içinde androideklenti yapılandırma.

android {
    dependencies {
    }
}

o boş dependenciesbloğu kaldırın .

DÜZENLEME: En son Android Studio ile de bu hatayı almaya başladım, tek yapmam gereken Gradle eklentisinin daha yeni bir sürümünü ve compileSdkVersion 22'yi eklemekti.

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
Ben hala aynı sorunu yaptım :(
Ashwani Kottapalli

dürüst olmak gerekirse, Crouton, Universal-Image-Loader ve googleplayServices bağımlılıklarınızdaki fazladan alıntıları ve boşlukları düzeltmeniz gerektiğini düşünüyorum. Developer.android.com/google/play-services/setup.html
EpicPandaForce

çalışmıyor ... bana fb kimliği veya başka bir şey verebilir misin ... böylece egzersiz yapabiliriz? Lütfen?
Ashwani Kottapalli

... bu durumda, böceğinizin ne olduğunu bilmiyorum. :( bu son kez başıma geldiğinde, android ve gradle eklentim güncelliğini yitirmişti ve artık var olmayan bir yapılandırma türü kullanıyordum
EpicPandaForce

1
Komut Satırı mı yoksa IDE mi kullandığınıza bağlıdır. Ve eğer IDE ise, o zaman ne IDE.
EpicPandaForce

247

Tercihler'e gidip "varsayılan gradle sarmalayıcısını kullan" ı seçip projeyi yeniden oluşturabilirsiniz. Benim için iyi çalıştı: görüntü açıklamasını buraya girin


4
Bunun neden olduğuna dair bir açıklaması olan var mı?
RACS

1
Görünüşe göre 1.4'ten 1.5'e güncelledikten sonra, bu ayar makinemde bunun yerine yerel dağıtımı kullanmak için "sıfırlandı". Bu cevap kesinlikle sorunu çözdü.
görünüyor. Eğlenceli

3
143.2532994 sürümünden itibaren bu sorun tekrar oluyor gibi görünüyor ... benimle aynı olan biri ...? Çok can sıkıcı ..
Arst

Seçilen cevap çok ayrıntılı ve dürüst olmasına rağmen, bu cevabın daha fazla olumlu oy almasının bir nedeni var
Pavel Zdenek

Oh, evet, bir sebep var - mac kullanıcıları. Windows'ta sayfa farklıdır. "Gösterilecek bir şey yok". İşaretli cevap en azından bir şekilde faydalıdır.
Gangnus

37

Git

pencereler

Dosya -> Ayarlar -> Derleme, Yürütme, Dağıtım -> Derleme Araçları -> Gradle

Mac

Tercih -> Derleme, Yürütme, Dağıtım -> Derleme Araçları -> Gradle

ve Varsayılan derecelendirme sarmalayıcısını kullan'ı seçin


1
Pencereler. Seçilecek bir şey yok.
Gangnus

2
İlk önce projeyi açmalısın.
Raptor

Ve Linux'ta Windows'dakiyle aynıdır: Dosya -> Ayarlar -> Oluşturma, Yürütme, Dağıtım -> Derleme Araçları -> Gradle. Cevabınızı düzenleyebilir ve "Windows / Linux" yazabilirsiniz.
lenooh

18

Benim sorunum, tüm build.setting dosyasının cannot be applied to '(groovy.lang.Closure)'belirli bir değişkende olmak yerine uyarı mesajlarıyla dolu olmasıdır.

Başkaları tarafından sağlanan tüm çözümleri denedim ama hiçbiri benim için işe yaramıyor. Bu adımları atmayı bıraktım, sonra bir cazibe gibi çalışıyor. Aynı sorunla karşılaşıyorsanız, bir deneyin.

  1. Dosyayı açın ve düzenleyin: yourproject/gradle/wrapper/gradle-wrapper.properties . Aşağıdaki resimde gösterildiği gibi not dağıtım sürümünü güncellemek için içeriği düzenleyin ve ardından kaydedin.
  2. Bu klasörü silin: yourproject/.gradle.
  3. Tıklayın Sync project with gradle files, o zaman gitmekte fayda var.

görüntü açıklamasını buraya girin


1
Proje / .gradle dizininizi silmenize gerek yoktur. Bunu yapmayı seçerseniz, org.gradle.daemon = true (yaygın bir optimizasyon) ile bir gradle.properties dosyası eklemek gibi, orada yaptığınız tüm özelleştirmeleri kaydettiğinizden emin olun. Bununla birlikte, basitçe yeniden oluşturabilirsiniz ve gradle wrapper, eski sürümlerin yanı sıra DistributionUrl'de belirtilen yeni sürümü indirecektir. Eski sürüm dizinlerinin projenizin gradle dizininde kalması normaldir.
Mark McClelland

Gradle sürümünü güncellemek gradle-wrapper.propertiessorunumu çözdü. Teşekkürler!
BVB

18

Zaten "varsayılan gradle sarmalayıcı" kullanıyorsanız ve bu yardımcı olmuyorsa:

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

Ayrıca 2 adımda denemeye yardımcı olmuyorsa:

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

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

Yeniden başlattıktan sonra uyarı kaybolmalıdır.

(Benim için çalıştı ve Android Studio ve IntelliJ Idea için)


Benim için çalıştı. Unutulmaması gereken tek şey şudur: Birlikte verilen not yerine kendi notunuzu kullanıyorsanız .gradle, ana dizininizden de silmeniz gerekir.

1
Sadece 2) talimatı yapmak benim için çalıştı. Teşekkürler!!
manolodewiner

2
çalıştı ... 5 saniye. sonra o hatayı tekrar aldım.
Yar

IntelliJ'in projeleri düzgün bir şekilde ayrıştırarak son zamanlarda ne kadar kötüye gittiği biraz sinir bozucu. Bu eskiden onun en önemli özelliğiydi ... şimdi en ufak bir şeye sendeliyormuş gibi geliyor.
smaudet

4

Diğer cevaplardan birini denemek için tercihlere girdim ki, gradleAna rehberimin yanlış . Bu yüzden dosya tarayıcısını açtım ve yeni gradlesürümü seçtim ve tüm hatalar ortadan kalktı . Resim aşağıda gösterilmiştir.

görüntü açıklamasını buraya girin


1

Bahse girerim sorun, size uyarılar veren kod parçasıyla tamamen ilgisizdir, büyük olasılıkla proguard dosyanızdır. Kodumda aşağıdakiler vardı ve aynı uyarıyı aldım:

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

Yorum yaparak runProguard false, tüm sorunlarım ortadan kalkar, düşün :)


Eğer değiştirirseniz Daniel Wilson yardım edecek yapar runProguardiçin minifyEnabledyerine? Daha fazla bilgiyi burada bulabilirsiniz
Sergii N.

1

Android Studio 2.2'de de aynı sorunu yaşıyorum , benim için çalışıyor:

orijinal:

android {
...
}

dependencies {
...
}

hareket dependencieshalinde android:

android {
...
   dependencies {
   ...
   }
}

1

Android Studio'da önbelleği geçersiz kılarak sorunu çözdüm ve yeniden başlattım.

File-> Invalidate Caches / Restart..

görüntü açıklamasını buraya girin


1

Bir Kotlin projesi için IntelliJ'de buna benzer bir sorunla karşılaştım. Görünüşe göre sorun, projemde JDK 8'i kullanacak şekilde ayarlanmış olmasına rağmen dil ve API sürümlerinin bir şekilde 1.3'e ayarlanmasıydı. Proje Tercihleri> Yönler bölümüne bakın. Benim durumumda, "proje ayarlarını kullan" seçeneğini işaretledim, ancak bunları her faset için manuel olarak ayarlamak da işe yarayabilir.


0
  1. Projeyi kapatın (Projeyi Dosyala / Kapat),
  2. Başlat menüsünde "Mevcut bir Android Studio projesini aç" ı seçin ve Android projenizi içeren klasörü seçin.

Bu benim için çalışıyor.


0

Gradle dosyaları, bu tür hataları önlemek için çeşitli yerlerde açık hale getirilebilir. Örneğin, Değiştir

configurations {

için

project.configurations {

veya

task {
    description 'foo'

için

task {
    setDescription 'foo'

0

Sorunu düzeltmek için projeyi kapatın, ardından başlat menüsünde "Mevcut bir Android Studio projesini aç" ı seçin ve Android projenizi içeren klasörü seçin. Dikkat edin, .iml proje dosyasını değil klasörü seçin .


0

"BuildTypes" öğesini kesip "android" bölümünde ve Yeniden Eşitle (yenile) Projesinde aynı yere yapıştırın


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.