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 扩展类型参考文档 )