47

突然 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 文件被错误地从谷歌中删除了

有谁知道,发生了什么?

4

3 回答 3

102

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

于 2018-10-23T12:20:22.883 回答
20

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

由于某种原因,对于 jcenter 中的许多库,许多库的 pom 文件保留在原处,但相应的 aar 文件已被删除。play-services-basement库也是如此。请在此处查看以下内容以供参考(play-services-basement的 pom 文件在 jcentre此处可用,但 aar 文件在 jcentre此处不可用):

解决方案:在您的项目级 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 存储库之前引用了 google 存储库。当 gradle build 开始时,它首先在 repositories{... 中列出的库中查找,以解析项目中使用的任何库。现在,当 gradle 尝试解析 jcenter 中的 play-services-basement 时,它成功解决了依赖关系,因为 google 存储库已经提供了相应的 aar 文件(最新版本的相同 aar 文件在 jcenter 存储库中不可用)已经在评估 jcenter 存储库之前引用。请检查并让我知道这是否有效。

于 2018-10-25T15:15:32.277 回答
0

在工作

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

}
于 2019-02-06T11:57:47.327 回答