无法获取 'play-services-location/maven-metadata.xml'。从服务器接收到状态代码 502:Bad Gateway

Could not GET 'play-services-location/maven-metadata.xml'. Received status code 502 from server: Bad Gateway

我有一个项目,昨天还运行,但是今天我发现了这个问题:

Could not resolve all files for configuration ':app:debugRuntimeClasspath'. Could not resolve com.google.android.gms:play-services-location:16.+. Required by: project :app > project :location > Failed to list versions for com.google.android.gms:play-services-location. > Unable to load Maven meta-data from https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml. > Could not get resource 'https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml'. > Could not GET 'https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml'. Received status code 502 from server: Bad Gateway

实际上我正在使用 classpath 'com.android.tools.build:gradle:4.1.0'distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip

我已经关注了这个 并将 'com.android.tools.build:gradle:4.1.0' 升级到类路径 'com.android.tools.build:gradle:4.2.0'.

然后我把distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip改成了distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip但是还是报错

android/build.gradle:

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.0'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

gradle-wrapper.properties:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

另外,我已经将 compileSdkVersionminSdkVersiontargetSdkVersion 更改为 30 但没有发生了。

这似乎是一个临时问题,包含这些库的服务器已关闭。我现在的房间也有同样的问题:

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

如果您使用的是 Android Studio,您可以尝试使用离线模式,然后它将使用此库的缓存版本(如果有)直到它被修复。

UPD. 我切换到 flutter lib 的 alpha 版本导致了这个(workmanager)并且它现在运行良好。据我了解,它依赖于 Android Room 库的旧版本,该库不再可用,因为 Bintray 不可用。新版本的 Room 已经可用,因为它正在通过另一个 link 下载。因此,对您来说,解决方案可能是更新到更新版本的 Flutter 位置包或分叉它并将播放服务位置的版本更改为最新版本。

经过几个小时的调试。我只是通过删除旧的 pubspec.lock 文件并将 firebase_messaging^9.1.4 更新为 ^11.1.0 来修复构建。我不知道为什么我不知道这个问题是如何解决的。

好像跟依赖有关

我通过 运行 flutter run --verbose 和分析输出发现了有问题的依赖关系。

对于那些有问题的人,似乎 Bintray 服务器最近关闭了。我的临时修复是将 Gradle 构建切换为离线以使用缓存来构建应用程序。

转到 android -> gradlew.bat 并修改以下内容并重建您的应用程序:

@rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% --offline

你可以关闭你的互联网,这样你就可以在离线模式下使用你的包,这是一个在服务器恢复之前调试你的应用程序的解决方案。

我在 Android Studio 中尝试 运行 此代码实验室时收到此 502 错误“网关错误 https://kotlin.bintray.com/kotlinx/androidx/room/room-common/maven-metadata.xml"https://github.com/google-developer-training/android-kotlin-fundamentals-apps/tree/master/DevBytesRepository

我通过在“build.gradle(Project:DevBytesRepository) 文件中进行以下更改来修复它:

1 - 添加存储库 mavenCentral()

2 - 删除 jcenter() 存储库

3 - 删除 maven { url "https://kotlin.bintray.com/kotlinx/" } 如下所示:

buildscript {
ext.kotlin_version = '1.3.72'
repositories {
    google()
    mavenCentral()
    //jcenter()
}
allprojects {
    repositories {
        google()
        mavenCentral()

      //  maven { url "https://kotlin.bintray.com/kotlinx/" }
    }  

问题是插件(在本例中为 location)没有指定 Android 库的固定版本。所以为了找到有哪些版本可用,Gradle 必须去版本库查看。在这种情况下,该存储库是 Bintray,它已关闭几天并返回 HTTP 502 Bad Request

下面的步骤提供了一个快速但肮脏的解决方法,因此您可以在 Bintray 关闭时构建应用程序。一个更合适的解决方案是按照 的建议分叉插件并更改你的分叉,但对于临时服务器错误来说可能有点矫枉过正。

  1. 在项目工具 window(其中列出了您的文件)中,一直向下滚动直到找到 Flutter Plugins。如果您没有看到它,请确保 Project 在项目工具 window.
  2. 顶部的下拉列表中 selected
  3. 打开Flutter plugins,找到location-4.0.0并打开(location-之后的版本号可能不同,没关系)。
  4. 打开文件location-4.0.0/android/build.gradle
  5. 找到行api 'com.google.android.gms:play-services-location:16.+'
  6. 改为api 'com.google.android.gms:play-services-location:16.0.0'。如果您的编辑说该文件不属于您的项目,select "I want to edit this file anyway".

您现在应该可以构建应用程序了。

此更改当然是临时解决方案,如果您更新 location 插件,您的更改将被覆盖。但至少在 Bintray 再次上线之前(或者直到您有时间迁移到另一个最近更新的插件),您将能够进行构建。

如果问题是由 location 插件引起的,并且您可以更新到它的最新版本(目前是 4.3.0),这似乎也可以解决问题。就我而言,由于其他一些与 Flutter 2 不兼容的软件包,我被困在旧版本的 Flutter 和 location 上。

如果你使用gradle implementation(你可能不会使用实现,但这个问题的访问者可能会使用),我可以像下面这样解决502问题。

implementation 'com.xxx.yyy:a.b.c' // not use +

在我写脚本之前(出现502问题)

implementation 'com.xxx.yyy:a.b.+' // use +

对于 React-Native 开发者,尝试替换

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

来自

maven { url 'https://dl.google.com/dl/android/maven2'}

在项目级别 build.gradle

如果你在 location flutter 包下使用 play-services-location 遇到这个问题,你可以继续下一个解决方案:

  1. 对存储库进行分叉 flutterlocation
  2. 对分叉的项目进行更改。 (您可以检查 this 提交的所有更改)
  3. 提交。推一下
  4. 在您的项目中,更改从分叉库中获取依赖项的方式
  location:
    git:
      url: git://github.com/dreambitio/flutterlocation.git
      ref: release/3.2.4
      path: location/
  1. 完成

几个笔记

  • 如果版本 3.2.4 适合您,您可以使用 step 4

  • 假设此场景适用于任何其他库。 Fork->Hotfix->Change target

  • 是的,这不是一个好的解决方案,但应该允许您在本地或使用任何 CI 工具继续。

这通常可以通过更新 gradle.wrapper.properties 文件中的 gradle 分布来解决。至少这对我有用(此后也解决了 CI/CD 管道问题)

所以我更新为:

distributionUrl=https://services.gradle.org/distributions/gradle-6.8.3-all.zip

您可以在没有互联网连接的情况下尝试 运行 该应用程序,但这不是永久的解决方案。因为没有互联网你无法构建 apk 文件。

试试这个,它解决了我的问题。

项目级别gradle文件

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        mavenCentral() // <- replaced jcenter()
    }

dependencies {
    classpath 'com.android.tools.build:gradle:4.+' // <- updated this
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.3.10'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
    }

}

allprojects {
    repositories {
        google()
        mavenCentral() // <- replaced jcenter()
    }
}

还有 gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip // <- updated this

花了一个星期的时间,我终于找到了一个临时解决方案。在 VS 代码的左侧展开依赖项选项并转到位置,然后在 build.gradle 文件中更改图片中的行。

主要问题location:3.2.4没有严格的Android依赖版本play-services-location:16.+

解决此问题的直接方法是添加 Gradle 对传递依赖的约束并在 app/build.gradle[ 中指定具体版本=21=]

根据评论更新。你不需要修改依赖包或lib,你必须编辑你的项目文件app/build.gradle

dependencies {
...
  constraints {
    implementation('com.google.android.gms:play-services-location') {
        version {
            strictly "16.0.0"
        }
        because 'location: 3.2.4 does not specify version & google.bintray.com answers 502 Bad Gateway'
    }
  }
}

只需将 gradle-wrapper.properties 中的 distributionUrl 更改为

distributionUrl=https://services.gradle.org/distributions/gradle-6.7-all.zip

对我有用。

升级'com.google.android.gms:play-services-ads-identifier:16+'插件解决了我

转到 build.gradle(app) 并更改为最新版本

   implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'

如果在@Magnus的答案中找不到文件夹,您可以在

这样的路径中打开文件

C:\flutter\.pub-cache\hosted\pub.dartlang.org\location-4.1.1\android\build.gradle

然后改变

api 'com.google.android.gms:play-services-location:16+'

api 'com.google.android.gms:play-services-location:16.0.0'

我 运行 遇到了同样的问题,做了一些解决方法并且有效。 在你的 android/build.gradle:

  • 将 kotlin 版本更改为 ext.kotlin_version = '1.5.0'
  • 将 android gradle 版本更改为:classpath 'com.android.tools.build:gradle:4.1.0'

然后转到 android/gradle/wrapper/gradle-wrapper.properties 并将 distributionUrl 更改为 6.9,如下所示:

  • distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip

然后扑干净运行。 :D

您可以通过以下步骤解决此问题,

  • 如下更改build.gradle文件,
  • 将 kotlin 版本更改为 1.4.0 或更高版本
  • 从存储库中删除 jcenter()并添加mavenCentral()
  • 将构建 gradle 工具版本更改为 4.1.0 或更高版本
 buildscript {
    ext.kotlin_version = '1.4.0' // or higher
    repositories {
        google()
        mavenCentral()  // add this
        maven {
            url 'https://maven.google.com'
        }
        // jcenter()  //remove or comment this
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'  // or higher
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()  // add this
        maven {
            url 'https://maven.google.com'
        }
        // jcenter()  // remove or comment this
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
  • gradle-wrapper.properties 文件上的 gradle 分发版本更改为 6.7 或更高版本
#Fri Mar 23 08:50:38 IST 2022
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
  • 通过以下命令升级依赖
flutter upgrade
  • 完成。