无法获取 '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
另外,我已经将 compileSdkVersion 、 minSdkVersion 和 targetSdkVersion 更改为 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 关闭时构建应用程序。一个更合适的解决方案是按照 的建议分叉插件并更改你的分叉,但对于临时服务器错误来说可能有点矫枉过正。
- 在项目工具 window(其中列出了您的文件)中,一直向下滚动直到找到
Flutter Plugins
。如果您没有看到它,请确保 Project
在项目工具 window. 顶部的下拉列表中 selected
- 打开
Flutter plugins
,找到location-4.0.0
并打开(location-
之后的版本号可能不同,没关系)。
- 打开文件
location-4.0.0/android/build.gradle
- 找到行
api 'com.google.android.gms:play-services-location:16.+'
- 改为
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
遇到这个问题,你可以继续下一个解决方案:
- 对存储库进行分叉 flutterlocation
- 对分叉的项目进行更改。 (您可以检查 this 提交的所有更改)
- 提交。推一下
- 在您的项目中,更改从分叉库中获取依赖项的方式
location:
git:
url: git://github.com/dreambitio/flutterlocation.git
ref: release/3.2.4
path: location/
- 完成
几个笔记
如果版本 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
- 完成。
我有一个项目,昨天还运行,但是今天我发现了这个问题:
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
另外,我已经将 compileSdkVersion 、 minSdkVersion 和 targetSdkVersion 更改为 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 关闭时构建应用程序。一个更合适的解决方案是按照
- 在项目工具 window(其中列出了您的文件)中,一直向下滚动直到找到
Flutter Plugins
。如果您没有看到它,请确保Project
在项目工具 window. 顶部的下拉列表中 selected
- 打开
Flutter plugins
,找到location-4.0.0
并打开(location-
之后的版本号可能不同,没关系)。 - 打开文件
location-4.0.0/android/build.gradle
- 找到行
api 'com.google.android.gms:play-services-location:16.+'
- 改为
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
遇到这个问题,你可以继续下一个解决方案:
- 对存储库进行分叉 flutterlocation
- 对分叉的项目进行更改。 (您可以检查 this 提交的所有更改)
- 提交。推一下
- 在您的项目中,更改从分叉库中获取依赖项的方式
location:
git:
url: git://github.com/dreambitio/flutterlocation.git
ref: release/3.2.4
path: location/
- 完成
几个笔记
如果版本 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
- 完成。