Android gradle build Error:(9, 0) Gradle DSL method not found: 'compile()'。

Posted

技术标签:

【中文标题】Android gradle build Error:(9, 0) Gradle DSL method not found: \'compile()\'。【英文标题】: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.+'

【问题讨论】:

Unsupported Gradle DSL method found: 'compile()'!的可能重复 【参考方案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 迁移过来也遇到了这个问题)。最后我找到了很简单的方法。

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

就是这样,尽情享受吧。

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于Android gradle build Error:(9, 0) Gradle DSL method not found: 'compile()'。的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 同步失败:'com.android.build.gradle.BasePlugin' 没有实现插件接口

Gradle 错误:找不到 com.android.tools.build:gradle:6.6.1

Android Gradle 构建工具(Android Gradle Build Tools)是什么?

Android Gradle 插件Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )

Android Studio开发Android——build.gradle文件详解

android build.gradle(groovy)