CI服务器错误:无法在存储库容器上找到方法google()for arguments []

时间:2018-04-26 14:02:03

标签: android android-gradle

我知道使用旧版本的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服务器上。

1 个答案:

答案 0 :(得分:1)

原因是项目的“app”模块(项目根目录下一层)有gradle和gradle包装器的第二个副本,gradle包装器配置为旧的v2.2

本地这不是问题,但无论出于何种原因,Nevercode CI都会使用app模块中的Gradle v2.2进行构建,然后因版本太旧而失败。

如果您看到这种情况,请检查您的子模块是否有旧版Gradle的杂散副本......