【问题标题】:Could not GET 'play-services-location/maven-metadata.xml'. Received status code 502 from server: Bad Gateway无法获取“play-services-location/maven-metadata.xml”。从服务器收到状态码 502:Bad Gateway
【发布时间】:2022-01-07 00:13:09
【问题描述】:

我有一个项目昨天运行良好,但今天发现这个问题:

无法解析配置“:app:debugRuntimeClasspath”的所有文件。 无法解析 com.google.android.gms:play-services-location:16.+。 要求: 项目:应用程序>项目:位置 > 无法列出 com.google.android.gms:play-services-location 的版本。 > 无法从 https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml 加载 Maven 元数据。 > 无法获取资源“https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml”。 > 无法获取“https://google.bintray.com/exoplayer/com/google/android/gms/play-services-location/maven-metadata.xml”。从服务器收到状态码 502:Bad Gateway

我正在使用classpath 'com.android.tools.build:gradle:4.1.0'distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip 我关注了这个question 我将'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,但仍然出现错误。

我的安卓/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,但什么也没发生。

【问题讨论】:

  • 它现在似乎可以正常工作了,您也可以使用吗?如果是,请考虑接受 asmodeoux 的回答,因为它似乎实际上是一个临时问题。
  • 服务器被永久删除:(
  • 伙计们,你可以关闭你的互联网,这样你就可以在离线模式下使用你的包裹。你不必连接二进制服务器。
  • 检查this 答案。它对我有用。
  • 如果有人遇到同样的问题,但使用 Firebase 库检查我的问题:stackoverflow.com/questions/70363283/… 并 +1 以更快地找到解决方案。非常感谢!

标签: android flutter gradle bintray jfrog


【解决方案1】:

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

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

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

您现在应该能够构建应用程序了。

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

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

【讨论】:

  • 你好@Magnus。我遇到了类似的问题,但就我而言,它发生在 Firebase 库中。 -- 例如,我得到的错误与 firebase_analytics 库有关。但是,假设我从我的项目中删除了该库,然后我得到了 cloud_firestore 库的类似错误(在我的情况下更难删除) - 你知道我可以为我解决这个问题吗? -- 顺便说一句:我正在使用 Flutter v2.0.3、旧版本的库(我已经尝试升级,但现在工作量太大)和 Dart,没有健全的 null 安全性
  • @Magnus 你拯救了我的一天。谢谢!
  • 经过3天的搜索和尝试,我的问题解决了谢谢
  • 我的 location 是 4.3.0 但它也在其 build.gradle 中使用 api 'com.google.android.gms:play-services-location:16.+'
  • 您的第一个解决方案对我有用。非常感谢。
【解决方案2】:

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

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. 我切换到了导致此问题(workmanager)的颤振库的 alpha 版本,现在它运行良好。据我了解,这取决于旧版本的 Android Room 库,由于 Bintray 不可用,该库不再可用。新版本的 Room 可用,因为它正在通过另一个链接下载。因此,对您而言,解决方案可能是更新到 Flutter 位置包的较新版本或对其进行分叉并将 play-services-location 的版本更改为最新版本。

【讨论】:

  • @AlaeddineBouhajja 是的,在 Bintray 修复它之前,成千上万的 Android 开发人员有时间喝一杯新咖啡 :-)
  • 同样在这里不起作用,我疯了好几个小时
  • 今天同样的问题 :(
  • 我又遇到这个问题了……最近好像服务器很不稳定,昨天我也遇到了这个错误,但是后来开始工作了,现在又不行了。所有这些回答说 replace jcenter() with mavenCentral()/etc 似乎对我不起作用,错误一直存在,直到错误消息中的 URL 重新联机。必须有某种方法可以强制 gradle 以某种方式使用另一个 URL,但是如何呢?并且关闭 wifi 也不起作用,它给了我另一个与 gradle 相关的错误消息并立即停止构建。
  • 还是挂了,有什么解决办法吗?
【解决方案3】:

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

解决此问题的直接方法是在传递依赖上添加 Gradle 约束并在 app/build.gradle

中指定具体版本

根据评论更新。您不需要修改依赖包或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'
    }
  }
}

【讨论】:

  • 嘿,但是你会在哪里添加这个。在包的 build.gradle 中还是你的项目中?
  • 请仔细阅读答案 - 在您的项目 app/build.gradle 中。您不必修改包
  • 谢谢@Sergey。我只是在确定——你能告诉我你是如何找到适合这个问题的版本的吗?因为它发生在我的其他包(Firebase 包)中,我不确定我应该为这些包指定哪个版本 - 我收到此错误无法解析 com.google.android.gms:play-services-measurement -base:[18.0.0]
  • @Migalv 你应该研究一下,也许还有另一个问题。当前的问题是不严格的 dep 版本导致 “无法列出 的版本”google.bintray.com 已关闭。如果问题相同 - 在您的依赖项中搜索 build.gradle 文件以查找该包,而不是在 maven repo 中搜索以找出具体版本
  • @Migalv 我的意思是用所有日志打开新问题,我会尝试用所有研究步骤来回答
【解决方案4】:

如果您在location 颤振包下使用play-services-location 遇到此问题,您可以继续下一个解决方案:

  1. 对存储库进行一个分支flutterlocation
  2. 在派生项目中进行更改。 (您可以在thiscommit 中检查所有更改)
  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 工具继续。

【讨论】:

【解决方案5】:

对于那些有问题的人,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

【讨论】:

  • 这种方法在管道中的 CI/CD 中失败...
  • 这听起来很有希望,但不幸的是,我也无法使用这种解决方法。有什么方法可以检查 gradle 缓存中的内容?
【解决方案6】:

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

【讨论】:

  • 如果你还没有你的包,这真的没有帮助......
  • 啊是啊 之前不安装就没用了
【解决方案7】:

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

这似乎与依赖有关。

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

【讨论】:

  • 我没有使用任何来自 firebase 的依赖
  • 在我的情况下工作管理器库导致它,但我已经使用它的最新版本,所以这不是我的情况
  • 尝试删除 pubspec.lock 并运行 flutter build 它将生成新的 pubspec,因为包管理器将获得 mb 不依赖于 jcenter() 的新依赖项 我通过运行 @987654328 发现了有问题的依赖项@ 并分析输出。
  • bintray 服务器已备份
【解决方案8】:

尝试替换

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

通过

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

在项目级别的 build.gradle 中

【讨论】:

  • 它为我解决了这个问题
【解决方案9】:

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

所以我更新为:

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

【讨论】:

    【解决方案10】:

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

    【讨论】:

    • 嘿,但是你会在哪里添加这个。在包或您的项目的 build.gradle 中? ——
    • 这个答案有直接依赖,你只需要约束过渡依赖版本。检查这个stackoverflow.com/a/70360614/12052309
    【解决方案11】:

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

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

    它对我有用。

    【讨论】:

      【解决方案12】:

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

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

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

      【讨论】:

        【解决方案13】:

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

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

        在我写脚本之前(发生502问题)

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

        【讨论】:

          【解决方案14】:

          您可以尝试在没有互联网连接的情况下运行该应用程序,但这不是一个永久的解决方案。因为没有互联网,您无法构建 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
          

          【讨论】:

            【解决方案15】:

            尝试在 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/" }
                }  
            

            【讨论】:

            • 我之前试过了,还是不行。对我有用的是this answer
            猜你喜欢
            • 1970-01-01
            • 2021-07-25
            • 2019-12-31
            • 1970-01-01
            • 2021-09-16
            • 2018-09-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多