Android gradle Не удалось разрешить: play-services-basement

внезапно gradle не может собрать тот же код, который работал несколько минут назад! мой проект зависит от зависимости сервиса Google Play

это говорит:

Не удалось найти play-services-basement.aar(com.google.android.gms: play-services-basement: 15.0.1). Поиск производился в следующих местах: https://jcenter.bintray.com/com/google/android/gms/play-services-basement/15.0.1/play-services-basement-15.0.1.aar.

Я думаю, что файл AAR был удален из Google по ошибке

У кого-нибудь есть идеи, что происходит?

Ответ 1

Добавьте репозиторий google() в свой build.gradle. И убедитесь, что google() находится перед jcenter().

Ответ 2

Проблема, кажется, с jcenter. Я провел часы вместе с этой проблемой, и ваша проблема, кажется, похожа на мою, и я думаю, что следующее решение должно работать.

По некоторым причинам и для многих библиотек в jcenter файлы pom многих библиотек сохранены, но соответствующие файлы aar удалены. Это также относится и к библиотеке подвалов play-services. Проверьте здесь следующее для справки (pom файл play-services-basement доступен в jcentre здесь, но aar файл не доступен в jcentre здесь):

Решение. В файле Gradle уровня проекта измените следующий блок кода.

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

в

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

почему это работает?

В нашем первом блоке кода, когда gradle пытается разрешить зависимость в репозитории (в моем случае это был google-services-basement в репозитории jcentre), он не разрешается, поскольку соответствующие файлы aar были удалены. В результате сборка завершается с чем-то вроде:

 Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1).

В нашем втором блоке кода ссылка на репозиторий Google была раньше, чем на репозиторий jcenter. Когда начинается сборка gradle, она сначала просматривает библиотеки, перечисленные первыми в репозиториях {..., для поиска любой библиотеки, которая используется в проекте. Теперь, когда gradle пытается разрешить play-services-basement в jcenter, он успешно разрешает зависимости, так как соответствующий файл aar был сделан доступным из репозитория google (тот же файл aar последней версии недоступен в репозитории jcenter), который был ссылка до оценки хранилища jcenter. Проверьте и дайте мне знать, если это работает.

Ответ 3

Работал

allprojects {
repositories {
    google()
    jcenter()
    maven {
        url 'https://jitpack.io'
    }
    maven {
        url 'https://maven.google.com'
    }

}