我知道使用旧版本的Gradle和Android Gradle插件可能会导致此错误,但在这种情况下,此构建错误仅发生在远程基于云的CI服务器(Nevercode)上,而不是本地(或在Android Studio或命令行中)。该项目正在使用两者的最新版本。这似乎与其他有关此错误的问题中提到的原因不同。
gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
root build.gradle:
buildscript {
repositories {
jcenter()
google() // <-- Error points to (line 7) here
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
}
}
allprojects {
repositories {
jcenter()
google()
flatDir {
dirs 'libs'
}
}
}
构建错误:
Could not find method google() for arguments [] on repository container.
/build.gradle' line: 7
Gradle无法找到google()的定义,但根据此Error:(6, 0) Gradle DSL method not found: 'google()'
,这应该适用于Gradle 4.0+和Android Gradle插件v3.0 +将google()切换为maven {url'https://maven.google.com'}无法解决问题。
我有其他项目使用这个CI提供程序构建得很好,使用看似相同的配置。带有该问题的项目由CI服务器在新的虚拟机中从存储库源构建,因此我不希望任何缓存的状态问题导致此问题。有趣的是,它每次都在本地构建好,而不是在CI服务器上。
答案 0 :(得分:1)
原因是项目的“app”模块(项目根目录下一层)有gradle和gradle包装器的第二个副本,gradle包装器配置为旧的v2.2
本地这不是问题,但无论出于何种原因,Nevercode CI都会使用app模块中的Gradle v2.2进行构建,然后因版本太旧而失败。
如果您看到这种情况,请检查您的子模块是否有旧版Gradle的杂散副本......