Android gradle build错误:(9,0)未找到Gradle DSL方法:' compile()'。

时间:2014-11-10 19:15:56

标签: android build gradle

当我尝试同步项目时,我收到以下构建错误:

Error:(9, 0) Gradle DSL method not found: 'compile()'
Possible causes:The project 'AlexTest' may be using a version of Gradle that does not contain the method.
The build file may be missing a Gradle plugin.
link: Apply Gradle plugin

我已经尝试将他们链接到我的每个单独的gradle插件应用到底部的那个链接,但同样的问题,所以我得出结论,第一个错误是原因。

这是AlexTest的build.gradle文件(项目目录):

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.13.2'
        compile 'com.google.android.gms:play-services:6.1.11'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

我认为这是它遇到问题的gradle文件。但我不确定它指的是什么方法。

此处还有gradle-wrapper.properties,它也提到了:

#Mon Nov 10 01:06:12 PST 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-all.zip

distributionUrl中的gradle版本是否需要匹配依赖项中的gradle版本?

我在app目录中也有一个build.gradle文件 - 低一级,虽然我不认为这是它所指的,但是这里是:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.snappiesticker.alextest"
        minSdkVersion 16
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:6.1.+'
}

5 个答案:

答案 0 :(得分:78)

  

我已经尝试将他们链接到我的每个单独的gradle插件应用到底部的那个链接,但同样的问题,所以我得出结论,第一个错误是原因。

正确。

  

这是AlexTest的build.gradle文件(项目目录):

您会注意到此文件包含代码注释:

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

从该文件中删除compile 'com.google.android.gms:play-services:6.1.11'行。将您拥有的compile 'com.google.android.gms:play-services:6.1.+'保留在另一个build.gradle文件中。

dependencies中的buildscript关闭仅适用于Gradle插件。在模块的dependencies文件中找到的顶级build.gradle闭包用于应用程序依赖。

答案 1 :(得分:13)

Saw报告说问题是由于其他原因而发生的,但这对我来说已经解决了。

如果您在项目结构(Android Studio)中执行任何更改并按OK,Gradle将被同步,但这种类型的同步,如果依赖块具有类似的内容:

同步后,此块将保持这种状态:

解决问题的一种方法是在同步之前插入一个换行符,或者在两个语句之间放一个分号。

我希望它有所帮助。

答案 2 :(得分:3)

只需在依赖项中添加愚蠢的语句

  

申请插件:'码头'

答案 3 :(得分:1)

大家好,对我来说,让我的应用程序在Android Studio中运行是“几天耗费工作”(我从Eclipse迁移并且也遇到了这个问题)。最后我找到了非常简单的方法。

  1. 在src / main / java /下创建libs文件夹,左窗格中是App / java / libs。
  2. 将所有外部广告复制并粘贴到此处。
  3. 转到左侧窗格并右键单击您的应用程序,然后单击“打开模块设置”
  4. 然后会出现“项目结构”窗口。
  5. 然后转到“依赖关系”选项卡。 最后一步:添加位于App / java / libs中的所有jar(你可以在src / main / java / libs中找到它们)。
  6. 这就是享受它。

答案 4 :(得分:1)

在模块的 build.gradle 文件中声明依赖项,而不是在AlexTest的 build.gradle 文件中声明

enter image description here