首页 > 解决方案 > Android Gradle 找不到远程 AAR

问题描述

我正在使用Gradle v5.4Android Gradle Plugin v3.5.2,没有任何问题!

我有一个远程 Artifactory 存储库,可以在其中上传.aar项目所需的文件。

当我更新到Gradle v6.5Android Gradle Plugin v4.0.1.aar时,不再下载这些文件。

这就是我添加这些依赖项的方式:

implementation "ar.com.sebasira:some-library:1.0.0@aar"

这在升级之前工作得很好。

在日志中我可以看到 AndroidStudio 在这个位置寻找它:

https://myrepo.com.ar/ar/com/sebasira/some-library/1.0.0/some-library-1.0.0.pom

如果我将该 URL 放在浏览器中,确实找不到任何东西,但如果我将最后一部分(扩展名)更改为.aar我可以下载工件。

我认为添加@aar是为了指示 Gradle 查找.aar文件,但它似乎不起作用。

我也尝试以其他方式添加依赖项,但没有运气。

implementation group: 'ar.com.sebasira', name: 'some-library', version: '1.0.0', ext: 'aar'

标签: androidgradleaar

解决方案


我发现从Gradle v6.0开始,Gradle 假设如果.pom远程存储库中没有文件是因为工件不存在,所以默认情况下它不会查找它。根据发行说明

如果 Gradle 未能在该部分中定义的存储库中找到模块的元数据文件 (.pomivy.xml) repositories { },它现在假定该模块不存在于该存储库中。

...

artifact()您可以通过添加元数据源来选择所选存储库的旧行为。

所以解决方案是将其添加到有问题的存储库中,如下所示:

repositories {
    maven {
        url 'the-repo-url'
        metadataSources {
            artifact()
        }
    }
}

推荐阅读