在Circle CI中找不到com.android.tools.build:gradle:3.0.0-alpha1。

176

我将gradle插件更新到最新版本:com.android.tools.build:gradle:3.0.0-alpha1,在AS中出现了这个错误:

export TERM="dumb"
if [ -e ./gradlew ]; then ./gradlew test;else gradle test;fi

FAILURE: Build failed with an exception.

What went wrong:
    A problem occurred configuring root project 'Android-app'. Could not
 resolve all dependencies for configuration ':classpath'. Could not
 find com.android.tools.build:gradle:3.0.0-alpha1. Searched in the
 following locations:
 https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.0-alpha1/gradle-3.0.0-alpha1.pom
 https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.0-alpha1/gradle-3.0.0-alpha1.jar
 Required by:

当前的CI配置文件circle.yml。

dependencies:
   pre:
      - mkdir -p $ANDROID_HOME"/licenses"
      - echo $ANDROID_SDK_LICENSE > $ANDROID_HOME"/licenses/android-sdk-license"
      - source environmentSetup.sh && get_android_sdk_25

   cache_directories:
    - /usr/local/android-sdk-linux
    - ~/.android
    - ~/.gradle
   override:
    - ./gradlew dependencies || true

test:
  post:
    - mkdir -p $CIRCLE_TEST_REPORTS/junit/
    - find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} $CIRCLE_TEST_REPORTS/junit/ \;

machine:
    java:
        version: oraclejdk8

编辑: 我的Gradle文件:

buildscript {
  repositories {
    jcenter()
    maven {
      url 'https://maven.google.com'
    }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0-alpha1'
    classpath 'com.google.gms:google-services:3.0.0'
    classpath "io.realm:realm-gradle-plugin:3.1.3"
  }
}

allprojects {
  repositories {
    mavenCentral()
    jcenter()
  }
}

task clean(type: Delete) {
  delete rootProject.buildDir
}
15个回答

359

Google现在有了新的Maven仓库。

https://android-developers.googleblog.com/2017/10/android-studio-30.html > Google的Maven仓库章节。

请在maven仓库中添加依赖:

https://developer.android.com/studio/preview/features/new-android-plugin-migration.htmlhttps://developer.android.com/studio/build/dependencies.html#google-maven

buildscript {
    repositories {
        ...
        // You need to add the following repository to download the
        // new plugin.
        google() // new which replace https://maven.google.com
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'  //Minimum supported Gradle version is 4.6.
    }
}

2
如果您运行时遇到约束错误,请添加以下内容:mavenCentral()、jcenter()、maven { url 'https://maven.google.com' }。 - Mohamed ALOUANE
4
дЄНйЬАи¶БжЈїеК†mavenCentral()пЉМеЫ†дЄЇjcenter()е∞±иґ≥е§ЯдЇЖгАВеПВиАГйУЊжО•пЉЪhttps://www.jfrog.com/knowledge-base/why-should-i-use-jcenter-over-maven-central/ https://blog.bintray.com/2015/02/09/android-studio-migration-from-maven-central-to-jcenter/ - mtrakal
我在Gradle脚本中添加了以下代码: maven { url 'https://maven.google.com' } 并进行构建,但是出现了以下错误: Gradle同步失败:无法连接到主机 请问如何解决这个问题? - yuchangfu
1
尝试在浏览器中打开网站:https://maven.google.com,你会发现它看起来像是出现了错误/停机:/。 - mtrakal
2
@Parker,我正在使用Android Studio 3.0-金丝雀频道。这是顶层的build.gradle类路径:com.android.tools.build:gradle:3.0.0-alpha4,完全按照原样复制的。请注意,在上周更新后它现在是alpha4版本。 - sud007
显示剩余7条评论

108

为了让东西通过命令行编译,我需要在buildscriptallprojects中都包含Maven repo。

root build.gradle:

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha2'
        ...
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.google.com' }
    }
}

buildscript块中需要它来找到AGP,在allprojects块中需要它来找到android.archcom.android.databinding包(以及其他包)。

更新: 看起来新的仓库只被称为google(),但我仍然需要在两个地方声明它。


7
注意更新:对我来说,“需要在两个地方声明”是解决方案,即在repositories和allprojects中都需要声明。 - Ultimo_m
2
maven { url 'https://maven.google.com' }当我放置它时,它对我起作用。 - Faisal Ashraf
1
将google()替换为this-> maven {url'https://maven.google.com'},然后连接您的VPN并再次同步。 Google让伊朗人的生活变得艰难,我希望你最糟糕的是Google!我真的很想念Eclipse。 - Ehsan

34
为了同步这里和其他地方的所有回答:
buildscript {
  repositories {
    google() 
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'

  } }

将您的build.gradle中的buildscript修改为以下内容,它会在google和jcenter之间找到所有的依赖项,但根据本答案的情况,其中一个不会找到所有的依赖项。


我不得不将这个添加到allprojects中,并在再次尝试之前运行android/gradlew --stop。然后它就可以工作了。 - Wayferer
2
我之前写的是 repositories { jcenter() google() },但是它并没有起作用... 将顺序反过来写成 repositories { google() jcenter() } 就解决了问题。 - ben
JCenter Maven仓库不再接收更新:请替换为mavenCentral()。 - M Karimi

24
对于伊朗人:我们需要使用代理或VPN来构建应用程序。
原因:由于Google的服务器制裁,导致无法构建应用程序或升级您的需求。

我们可以使用离线仓库来获取特定版本吗? - MrSalesi
@MrSalesi 当然不是 :( - A1Gard

16

mtrakal的解决方案很好用。

添加到gradle.build:

buildscript {
    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha2'

        // NOTE: Do not place your application dependencies here; 
        // they belong in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

然后它自动升级到alpha2。

清除缓存并重启一切都正常。

文件|无效化缓存/重启

选择“无效化并重启”


JCenter Maven仓库不再接收更新:请替换为mavenCentral()。 - M Karimi

8

我做了以下操作:

点击SDK管理器:

在此输入图片描述

更新Canary渠道中的更新,检查并更新它...

在此输入图片描述

然后进入build.gradle文件并将编译版本更改为26.0.0-beta2:

在此输入图片描述

然后进入gradle/build.gradle文件并将依赖项classpath 'com.android.tools.build:gradle:3.0.0-alpha7'更改为:

在此输入图片描述

同步项目之后...它对我有效! 希望能帮助到您...谢谢!


7
请确保您在顶级 build.gradle 中添加以下行,这样应该就可以解决问题了。
maven { url 'https://maven.google.com' }

我遇到了你提到的同样的错误,但是一旦我添加了这个条目,一切就正常了。


尝试后得到了以下结果:> 无法找到com.android.support.constraint:constraint-layout:1.0.2。 - Mohamed ALOUANE
我认为如果您发布您的app/build.gradle和build.gradle文件,会帮助解决问题。同时,尝试使用“文件” -> “无效缓存”选项,重启Android Studio,看看是否有所改善。 - Subodh Nijsure

3

对我来说,我解决了这个错误,只需在 repository 中添加这行代码:

maven { url 'https://maven.google.com' }

2
更新: 令人非常沮丧的是,maven.google.com 重定向似乎会影响资源的加载。如果您将仓库设置为 maven { url 'https://dl.google.com/dl/android/maven2' },则这些文件将会被解析。您可以通过尝试获取 https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.0-alpha1/gradle-3.0.0-alpha1.pom 的完全限定资源来验证此问题。3.0.0 Alpha

这是因为目前只有通过新的 'https://maven.google.com' 仓库才能获取到 gradle:3.0.0-alpha1,但是该网站当前在该位置返回404错误,否则,作为公共目录,您只需浏览器导航到该位置即可查看所有可用文件的树形列表。当他们解决故障时,您的CI构建应立即通过。


该存储库[https://dl.google.com/dl/android/maven2]不再可用... - marciowb

1
我在谷歌上找到了这个: https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html 它提到我们需要:
  1. 将Gradle版本更新为gradle-4.1-all (通过修改gradle-wrapper.properties中的distributionUrl=https://services.gradle.org/distributions/gradle-4.1-all.zip)
  2. 将google()添加到仓库中 repositories { google() } 并且 dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta7' }
您可能需要安装Android Studio 3。

我不是一个点踩者,但这并不能解决问题,因为此问题发生在你实际迁移到新的gradle之后。 - Kyrylo Zapylaiev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接