I have a project which was running well yesterday, but today I find this problem:
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
Actually I'm using classpath 'com.android.tools.build:gradle:4.1.0'
with distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip
.
I have followed this question
and upgraded 'com.android.tools.build:gradle:4.1.0'
to classpath 'com.android.tools.build:gradle:4.2.0'
.
Then I changed distributionUrl=https://services.gradle.org/distributions/gradle-6.5-bin.zip
to distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
but I still got the error.
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
Also I have changed the compileSdkVersion , minSdkVersion and targetSdkVersion to be 30 but nothing happened.
The problem is that a plugin (location
in this case) didn't specify a fixed version of an Android library. So in order to find which versions are available, Gradle must go to the repository to check. In this case, that repository is Bintray
, which has been down for days and returning HTTP 502 Bad Request
.
The steps below provide a quick and dirty workaround so you can build the app while Bintray is down. A more proper solution would be to fork the plugin and make changes to your fork as suggested by Eldar Miensutov, but it might be a bit overkill for a temporary server error.
Flutter Plugins
. If you don't see it, make sure that Project
is selected in the dropdown at the top of the Project tool window.Flutter plugins
, find location-4.0.0
and open it (you might have a different version number after location-
, that's fine).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'
. If your editor says that the file does not belong to your project, select "I want to edit this file anyway"
.You should now be able to build the app.
This change is of course a temporary solution, and if you update the location
plugin your changes will be overwritten. But at least you'll be able to build until Bintray comes online again (or until you had time to migrate to another more recently updated plugin).
OR
In case the problem is caused by the location plugin and you are able to update to the latest version of it (4.3.0
at the moment), that also seems to resolve the problem. In my case, I was stuck on an old version of Flutter and location
because of some other packages that weren't compatible with Flutter 2.