'依赖项'不能应用于'(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 } }
根据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
插件configuration中有一个dependencies
。
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() } }
你可以去Preferences并select“use default gradle wrapper”然后重build项目。 它对我来说很好:
去
视窗
文件 – >设置 – >生成,执行,部署 – >生成工具 – > Gradle
苹果电脑
首选项 – >构build,执行,部署 – >构build工具 – > Gradle
并select使用默认的gradle包装器
我的问题是,整个build.setting文件被占用cannot be applied to '(groovy.lang.Closure)'
警告消息,而不是发生在任何特定的variables。
我已经尝试了其他人提供的所有解决scheme,但没有一个适合我。 我结束了这些步骤,然后它就像一个魅力。 如果遇到同样的问题,请尝试一下。
- 打开并编辑文件:
yourproject/gradle/wrapper/gradle-wrapper.properties
。 编辑内容以更新gradle分发版本,如下图所示,然后保存。 - 删除这个文件夹:
yourproject/.gradle
。 - 点击
Sync project with gradle files
,然后你很好去。
如果你已经在使用“默认的gradle包装器”,并没有帮助:
In Menu click: File -> Invalidate Caches / Restart...
如果它也不能帮助尝试分两步:
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
主目录错误的警告时,我进入了首选项来尝试其他答案之一。 所以我打开了文件浏览器,select了更新的gradle
版本,所有的错误都消失了。 图像如下所示。
我敢打赌,这个问题与给你警告的那段代码完全无关,很可能是你的proguard文件。 我在我的代码中得到了以下警告:
buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }
通过评论runProguard false
,我所有的问题消失,去图:)
我在android studio 2.2中有同样的问题,它为我工作:
原版的:
android { ... } dependencies { ... }
在android
移动dependencies
:
android { ... dependencies { ... } }
- closures项目(文件/closures项目),
- 在开始菜单中select“打开现有的Android Studio项目”,然后select包含Android项目的文件夹。
这为我工作。
Gradle文件可以在几个地方显式来避免这种错误。 如改变
configurations {
至
project.configurations {
要么
task { description 'foo'
至
task { setDescription 'foo'
要解决这个问题,只需closures项目,然后在开始菜单中select“打开现有的Android Studio项目”,然后select包含Android项目的文件夹。 当心,请select文件夹 ,而不是.iml项目文件。
我通过使caching无效并重新启动来解决Android Studio中的问题。
File-> Invalidate Caches / Restart..
剪切,然后粘贴在“android”部分和重新同步(刷新)项目相同的地方“buildTypes”
我用gradle 2.10修复了这个问题。
在这里下载: http : //gradle.org/gradle-download/
并设置您的本地gradle分布像这样: