2015-04-21 54 views
114

我無法修復這個錯誤 '(groovy.lang.Closure)':'依賴' 不能應用於

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

我敢肯定,這些都是非常相關性很強,正如我在那裏的回答所表明的那樣,我認爲錯誤標記是一個錯誤,因此解決方案的差異。 http://stackoverflow.com/questions/29133601/buildtypes-cannot-be-applied-to-groovy-lang-closure/30823995#30823995 這並不是說這裏的最佳答案並沒有提出一些非常有用的一般觀點你的「當前」gradle buildscript –

+0

看到這個http://stackoverflow.com/questions/29133601/buildtypes-cannot-be-applied-to-groovy-lang-closure – myNameCoad

回答

22

什麼Android Studio生成的,您需要有一個頂級項目文件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.+' 
} 

但是,即使沒有這一切,您的問題是,你有你的android插件配置中的一個dependencies。該空dependencies

android { 
    dependencies { 
    } 
} 

刪除。

編輯:我也開始收到此錯誤了最新的Android工作室,所有我需要做的就是添加插件搖籃的新版本,並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

我這樣做仍然是同樣的問題:( –

+0

說實話,我認爲您應該修復Crouton,Universal-Image-Loader和googleplayServices依賴關係中的額外引號和空格。根據http://developer.android.com/google/,您應該只使用部分Google Play服務。 play-services/setup.html – EpicPandaForce

+0

它不工作...你可以給我fb ID或其他...所以我們可以鍛鍊嗎?請 –

1

我敢打賭,你的問題是與給你警告的那段代碼完全無關,很可能它是你的proguard文件。我在我的代碼如下,並得到了同樣的警告:

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

註釋掉runProguard false,我所有的問題走,去圖:)

+0

如果您將'runProguard'改爲'minifyEnabled',Daniel Wilson會有幫助嗎?更多信息提供[這裏](http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0) –

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,那麼你很好走。

enter image description here

+1

沒有必要刪除您的項目/ .gradle目錄。如果您選擇這樣做,請確保保存您在那裏做出的任何自定義設置,例如使用org.gradle.daemon = true(通用優化)添加gradle.properties文件。但是,您可以簡單地重新構建,並且gradle包裝器將下載distributionUrl中指定的新版本以及舊版本。舊版本目錄保留在項目的gradle目錄中很好。 – markproxy

+0

更新'gradle-wrapper.properties'中的gradle版本解決了我的問題。謝謝! – BVB

246

你可以去首選項,並選擇「使用默認gradle這個包裝」,然後重新生成項目。它的工作很適合我: enter image description here

+4

有沒有人有解釋爲什麼會發生這種情況? – racs

+4

@EpicPandaForce請將此標記爲正確答案 – muetzenflo

+1

這似乎是從1.4更新到1.5之後,此設置得到了「重置」,而不是在我的機器上使用本地分配。這個答案明確解決了這個問題。 – fayerth

37

轉到

的Windows

文件 - >設置 - >構建,執行,部署 - >生成工具 - >搖籃

的Mac

首選項 - >構建,執行,部署 - >構建工具 - > Gradle

,並選擇使用默認gradle這個包裝

+1

Windows。Nothing to select。 – Gangnus

+2

首先你必須先打開項目。 – Raptor

+0

在** Linux **上它和Windows一樣:文件 - >設置 - >生成,執行,部署 - >編譯工具 - > Gradle,你可以編輯你的答案並編寫「Windows/Linux」 – lenooh

4

我走進喜好嘗試其他的答案中的一個時,我注意到一個警告,我gradle主目錄是錯誤的。所以我打開了文件瀏覽器並選擇了較新版本的gradle,所有的錯誤都消失了。圖像如下所示。

enter image description here

0
  1. 關閉項目(File /關閉項目),
  2. 選擇「打開的現有的Android Studio項目「,並選擇包含Android項目的文件夾。

這個工作適合我。

16

如果你已經使用的是「默認gradle這個包裝」,並沒有幫助:

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)

+0

爲我工作,唯一需要注意的是:如果你使用自己的gradle而不是捆綁的,你必須刪除'。 gradle'也在您的主目錄中 – sn0w

+1

只是在執行2)指令爲我工作,謝謝!! – manolodewiner

+2

工作... 5秒鐘,然後我再次得到那個錯誤 – Yar

1

我已經在Android Studio中2.2同樣的問題,它爲我工作:

原:

android { 
... 
} 

dependencies { 
... 
} 

舉動dependenciesandroid

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

搖籃文件可以在幾個地方顯式以避免這種錯誤。例如。更改

configurations { 

project.configurations { 

task { 
    description 'foo' 

task { 
    setDescription 'foo' 
0

要解決該問題,只需關閉該項目,然後選擇「打開一個現有的Android Studio項目「在開始菜單上選擇包含您的Android項目的文件夾。請注意,選擇文件夾,而不是.iml項目文件。

0

我通過使緩存失效並重新啓動來解決Android Studio中的問題。

File-> Invalidate Caches/Restart..

enter image description here

0

剪切並粘貼「buildTypes」在「Android」的部分,同一個地方重新同步(刷新)項目