Android gradle构建失败:无法解析play-services-basement。

47

可能是重复的问题:无法解析:recyclerview-v7 - Radesh
3个回答

102

在您的build.gradle中添加google()仓库。并检查google()是否在jcenter()之前。


我检查了整天构建的git提交记录,为什么现在它停止工作了? - Ahmed Ali
8
哇,不知道为什么它起作用了(在 jcenter() 之前加上 google() )。 我已经使用这个配置几年了! - guy_m
12
Google(或Jcenter)突然从Jcenter中删除了Play服务的构件,但仅删除了构件而不是依赖项。因此,当Gradle在Jcenter中检查依赖项时,一切正常,但下载失败并导致构建失败。将google()放在jcenter()之前,Gradle将在jcenter之前先检查Google中的Play服务依赖项,并且Google存储库似乎是正确的。 - Jivy
我两个都有,但我把Google放在JCenter之上,这似乎已经为我解决了问题。这真是一个怪癖,感谢你指出了顺序! - ima747
我建议将google()放在最顶部。我也将maven包含为一个仓库,但我不得不将google放在它上面才能使其工作。 - passatgt
显示剩余3条评论

21

问题似乎出在jcenter上。我已经花了数小时来解决这个问题,您的问题似乎与我的类似,我认为以下解决方案应该有效。

由于某种原因,对于jcenter中的许多库,许多库的pom文件仍然存在,但相应的aar文件已被删除。这也是play-services-basement库的情况。请参考此处(play-services-basement的pom文件位于jcenter这里,但aar文件不在jcenter这里):

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

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

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

为什么这个有效?

在我们的第一个代码块中,当Gradle尝试在存储库中解析依赖项(在我的情况下,它是jcentre存储库中的google-services-basement),由于相应的aar文件已被删除,因此未能解析。结果,构建失败并显示类似以下内容:

 Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1).
在我们的第二个代码块中,谷歌存储库在jcenter存储库之前被引用。当Gradle构建开始时,它首先查找在repositories {...}中列出的库以解决项目中使用的任何库。现在,当Gradle尝试在jcenter中解决play-services-basement时,它成功地解决了依赖关系,因为谷歌存储库提供了相应的aar文件(最新版本的相同aar文件不可在jcenter存储库中获得),该存储库已在jcenter存储库之前被引用。请检查并告诉我是否有效。

无法在phonegap cordova-android@7.1.0项目中工作。 - Joel Chu

0

已经工作

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

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接