Android gradle无法解决:play-services-basement

Ahm*_*Ali 46 android google-play-services gradle-dependencies

突然gradle无法构建刚刚工作的相同代码!我的项目取决于谷歌播放服务依赖项

它说 :

找不到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文件被误删了谷歌

有没有人有任何想法,发生了什么?

Jiv*_*ivy 101

在build.gradle中添加google()存储库.并检查google()是否在jcenter()之前.

  • 谷歌(或Jcenter)突然从Jcenter删除了播放服务,但只删除了工件,而不是依赖项,所以当Gradle检查Jcenter中的依赖关系时,没关系,但下载失败并且构建失败.在jcenter()和Gradle之前放置google()会在jcenter之前检查google中的播放服务依赖关系,并且Google存储库似乎是正确的 (12认同)
  • 哇.不知道为什么它起作用(在jcenter()之前放谷歌()).我已经使用这个配置几年了(!) (8认同)

Abh*_*hra 20

问题似乎与jcenter有关.我花了几个小时一起解决这个问题,你的问题似乎与我的问题类似,我认为以下解决方案应该有效.

出于某种原因,对于jcenter中的许多库,许多库的pom文件都保留在原位,但相应的aar文件已被删除.play-services-basement库也是如此.请查看以下内容以供参考(play-services-basement的 pom文件可在jcentre 这里获得,但aar文件不在jcentre 这里提供):

解决方案:在项目级别gradle文件中,更改以下代码块

allprojects {
    repositories {
        jcenter()
        google()
    }
}
Run Code Online (Sandbox Code Playgroud)

allprojects {
    repositories {
        google()
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

在我们的第一个代码块中,当gradle尝试解析存储库中的依赖项时(在我的情况下,它是jcentre存储库中的google-services-basement),因为相应的aar文件已被删除,所以ddi无法解析.结果,构建失败的原因如下:

 Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1).
Run Code Online (Sandbox Code Playgroud)

在我们的第二个代码块中,google存储库已在jcenter存储库之前引用.当gradle构建开始时,它首先在存储库中首先列出的库中查找{...以解析项目中使用的任何库.现在,当gradle这个尝试解析jcenter播放服务的地下室,它成功地解决依赖性,对应的AAR文件已可通过谷歌库(最新版本相同的AAR文件不可用在jcenter库),它一直在评估jcenter存储库之前引用.检查并告诉我是否有效.