【问题标题】:Android gradle build Error:(9, 0) Gradle DSL method not found: 'compile()'.Android gradle build Error:(9, 0) Gradle DSL method not found: 'compile()'。
【发布时间】:2015-01-07 04:41:21
【问题描述】:

我在尝试同步我的项目时遇到以下构建错误:

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版本需要匹配依赖中的那个?

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

【问题讨论】:

标签: android build gradle


【解决方案1】:

我已经尝试在底部的那个链接中应用他们链接到我的每一个 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 文件中。

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

【讨论】:

  • 再次感谢 CommonsWare。你对 Android 的了解比任何一本书或任何人都多。
  • 简而言之:RTFM :) [我也没有。]
  • @elron:如果它让你感觉更好,IIRC,Gradle 插件系统正在大修,所以我希望最终双buildscript 系统能够得到修复。向人们解释非常令人困惑,“是的,你必须修改buildscript,但不仅仅是any buildscript,而是right buildscript
  • 你太棒了..!已经 2 周了,我被这件事困住了。
  • 当两个编译命令出现在同一行时,我也遇到了同样的问题。当我将它们分成两行时,问题就消失了。
【解决方案2】:

看到报告说问题是由于其他原因而发生的,但这为我解决了。

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

同步后这个块会保持这种状态:

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

希望对你有帮助。

【讨论】:

  • “多个依赖项合并为一行”不知何故发生在一天完成开发和开始下一天之间。所有的错误都是模糊和无益的。将它们分别放回一条线上会立即解决所有问题。干得好!
【解决方案3】:

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

应用插件:'jetty'

【讨论】:

    【解决方案4】:

    大家好,对我来说,让我的应用在 Android Studio 中运行是一项“耗时的工作”(我从 Eclipse 迁移过来也遇到了这个问题)。最后我找到了很简单的方法。

    1. 在 src/main/java/ 下创建 libs 文件夹,左侧窗格中为 App/java/libs。
    2. 将所有外部 jars 复制并粘贴到此处。
    3. 转到左窗格并右键单击您的应用程序,然后单击打开模块设置
    4. 然后会出现项目结构窗口。
    5. 然后移动到 Dependencies 选项卡。 最后一步:将所有位于 App/java/libs 中的 jars (您将在 src/main/java/libs 中找到它们)一一添加。

    就是这样,尽情享受吧。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-26
        • 1970-01-01
        • 1970-01-01
        • 2014-05-09
        • 2015-11-19
        • 2015-02-21
        相关资源
        最近更新 更多