我将在Android Studio中浏览Google的“为您的项目添加Google Play服务”文档: https://developer.android.com/google/play-services/setup.html
我正在使用该文档来修改新创建的Android项目的build.gradle文件。在第2步(将Google Play服务添加到您的项目中)中,它声明:
添加以下行:
apply plugin: 'android'
在依赖项下,添加以下内容:
compile 'com.google.android.gms:play-services:5.0.77'
它还表示要在更新Google Play服务后更新该版本,根据Android SDK Manager,该服务现在为18岁。
这是我在顶层的整个build.gradle文件(此文件的父文件是根文件夹)。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply plugin: 'android'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
compile 'com.google.android.gms:play-services:18'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
保存后,会提示输入同步。我同步它,但得到:
Build script error, unsupported Gradle DSL method found: 'compile()'!
Error:(10, 0) Possible causes could be:
- you are using a Gradle version where the method is absent
- you didn't apply Gradle plugin which provides the method
- or there is a mistake in a build script
我正在使用Android Studio 0.8.2。我没有安装Gradle,只使用Android Studio附带的插件。
值得注意的是,当我创建这个新项目时生成的build.gradle文件说:
//NOTE: Do not place your application dependencies here
但谷歌的文档说(与上述内容有冲突):
Note: Android Studio projects contain a top-level build.gradle file and a build.gradle
file for each module. Be sure to edit the file for your application module.
我的build.gradle文件(或环境)出了什么问题?
答案 0 :(得分:17)
您引用的Google文档是正确的,并且不会发生冲突。有多个 build.gradle 文件。不要将依赖项放在顶层,而是将它们放在模块目录中的构建文件中。
另外,不要在该顶级构建文件中放置apply plugin: 'android'
语句;它会导致错误。
您还可以通过“项目结构”UI添加依赖项,这样做是正确的。
答案 1 :(得分:8)
不要通过编辑最“外部”的build.gradle( YourProject / build.gradle )来在项目中添加依赖项。编辑“app”模块下的那个( YourProject / app / build.gradle )。
顺便说一下,你会发现一个依赖的声明,例如:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
此块将位于 android {...} 配置块下方。 就我而言,我只是添加了leeloo依赖项,因此它变为:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'net.smartam.leeloo:oauth2-client:0.1'
compile 'net.smartam.leeloo:oauth2-common:0.1'
}
然后同步您的项目和依赖项将被下载。希望它有所帮助!
答案 2 :(得分:1)
编译时依赖项应位于dependencies
下的allprojects
块中,而不是buildscript
下的<{p}}:
apply plugin: 'android'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
allprojects {
repositories {
jcenter()
}
dependencies {
compile 'com.google.android.gms:play-services:18'
}
}
这应该可以正常工作。
答案 3 :(得分:1)
将“Gradle DSL方法”视为Java方法。因此,在Gradle中,方法可以通过{}或“。”来区分。所以
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
与
相同dependencies.compile fileTree(dir: 'libs', include: ['*.jar'])
其中“dependencies”和“compile”都是方法。
因此,您在build.gradle文件中的某个位置包含了一个程序不支持的方法。例如,将您的依赖项设为:
dependencies {
nothing 'this.does.nothing.build:gradle:0.7.+'
}
与写作相同:
dependencies.nothing 'this.does.nothing.build:gradle:0.7.+'
你会看到一个错误,说“找不到支持的Gradle DSL方法:'没什么()'!” 显然&#34;没什么&#34;不是一个真正的方法。我刚刚完成了。
所以你的一个&#34;编译&#34; build.gradle中的方法是错误的。
答案 4 :(得分:0)
我不确定为什么会对先前提到的解决方案(Scott Barta&amp; JBaruch)进行投票。如果我们通过上面提到的解决方案和评论,它将完全有效。
然而,当我遇到这个问题时,我使用android开发人员UI导入依赖项,如下所示: -
1转到视图---&gt;打开模块设置