Android Gradle 没有找到远程 AAR

Android Gradle not finding remote AAR

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

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

当我更新到 Gradle v6.5Android Gradle 插件 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'

我发现从 Gradle v6.0 开始,Gradle 假定如果 .pom 文件不存在远程仓库是因为神器不存在,所以默认不找。根据release notes:

If Gradle fails to locate the metadata file (.pom or ivy.xml) of a module in a repository defined in the repositories { } section, it now assumes that the module does not exist in that repository.

...

You can opt into the old behavior for selected repositories by adding the artifact() metadata source.

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

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