jcenter.bintray.com is down Error: 502 Bad Gateway

jcenter.bintray.com is down Error: 502 Bad Gateway

尝试构建我的项目时出现以下错误:

Could not GET
'https://jcenter.bintray.com/androidx/lifecycle/lifecycle-common/maven-metadata.xml'.
Received status code 502 from server: Bad Gateway

有解决办法吗?

这是 JCenter 的全球中断。您可以在 https://status.gradle.com 监控状态。它取代了 bintray 状态页面,该页面现在似乎已完全停用并且 returns 502 错误。

1 月 13 日更新,06:35 UTC

JCenter 现已重新上线,系统已全面运行。

1 月 20 日更新

Gradle 插件解决中断事后分析

https://blog.gradle.org/plugins-jcenter

Following this incident, the Gradle Plugin Portal now uses a JCenter mirror hosted by Gradle instead of JCenter directly. This should shield users from short JCenter outages for libraries that have been cached by the mirror. We saw another short outage of JCenter over the weekend and this did not appear to impact Gradle Plugin Portal users.

我今天遇到了同样的问题。由于 JCenter 已被弃用,我们决定现在放弃它。

我发现的问题是用于 Gradle 插件的存储库列表与您用于 compile/run 您的应用程序的存储库列表不同。除了将它从您的 compile/run 时间依赖项的存储库中删除之外,您还需要强制 Gradle 不将它用于插件。我将以下内容添加到我的 settings.gradle.kts 文件中:

pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }
}

参见Custom Plugin Repositories

JCenter 提到从 2021 年 3 月开始它不再适用于新包,类似的,但它将无限期地用于只读目的。现在好像是掉了,不过应该早点恢复吧(祈祷)

参考:

Into the Sunset on May 1st: Bintray, GoCenter, and ChartCenter

一些第三方库使用JCenter 作为存储库,但我们可以很容易地覆盖它。为此,您只需要在 /[= 中创建一个名为 init.gradle.kts 的文件25=]目录(如果是React Native项目),代码如下:

apply<EnterpriseRepositoryPlugin>()

class EnterpriseRepositoryPlugin : Plugin<Gradle> {
    companion object {
        const val ENTERPRISE_REPOSITORY_URL = "https://repo.gradle.org/gradle/repo"
    }

    override fun apply(gradle: Gradle) {
        gradle.allprojects {
            repositories {

                all {
                    if (this !is MavenArtifactRepository || url.toString().contains("jcenter")) {
                        project.logger.lifecycle("Repository ${(this as? MavenArtifactRepository)?.url ?: name} removed.")
                        remove(this)
                    }
                }

                // add the enterprise repository
                add(maven {
                    name = "STANDARD_ENTERPRISE_REPO"
                    url = uri(ENTERPRISE_REPOSITORY_URL)
                })
            }
        }
    }
}

然后,您只需要清理 gradlew 并使用以下命令重新构建:

./gradlew assembleRelease --init-script init.gradle.kts

我遇到了同样的问题。在 build.gradle 文件中使用 maven { url 'https://maven.aliyun.com/repository/jcenter' } 而不是 jcenter 可能会解决问题,但不推荐这样做,因为它是非官方的。

跌倒了。您可以在以下位置查看状态 https://status.gradle.com/.

如果您仍然需要编译您的应用程序(但您之前已经编译过),可能是因为您在缓存中有这些包。停用 Internet 连接,拔下插头,关闭您拥有的设备,enp3s0,eth0 等,或者如果您使用 Android Studio 离线编译。

如果您的应用程序使用本地或外部网络的服务,编译后重新连接到 Internet 一切都会正常。现在,如果你之前没有编译过,或者你清除了缓存,即它是一个新的应用程序,我已经看到了几个过程,但是none对我有用,只是祈祷。

JCenter 的维护者 JFrog 宣布他们将淘汰 JCenter。 这意味着 Android 开发人员的应用依赖项如下:

  • 2021 年 3 月 31 日 - JCenter 中的库将不再更新。
  • 2022 年 2 月 1 日 - JCenter 将完全关闭。

将 Maven Central 添加到您的项目中:

  1. 打开你的根目录build.gradle
  2. 找到说 jcenter() 的行并将它们替换为 mavenCentral()(确保在找到 jcenter() 的两个位置都添加 mavenCenteral()。)

.

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        mavenCentral() // New line
        // jcenter()
       // NOTE: Keep any other entries you may have had here
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.2"
        //... no changes here
    }
}
allprojects {
    repositories {
        google()
        mavenCentral() // New line
        // jcenter()
       // NOTE: Keep any other entries you may have had here
    }
}

您可以在这里找到更多信息:https://blog.gradle.org/jcenter-shutdown

这个问题影响了我的 Jenkins 补丁(由于脚本试图从 JCenter 获取 job-dsl-core),所以我最终在文件 [=14 中用 gradlePluginPortal() 替换了 jCenter() =],现在一切正常。