android - Android Gradle 找不到远程 AAR
问题描述
我正在使用Gradle v5.4和Android Gradle Plugin v3.5.2,没有任何问题!
我有一个远程 Artifactory 存储库,可以在其中上传.aar
项目所需的文件。
当我更新到Gradle v6.5和Android 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'
解决方案
我发现从Gradle v6.0开始,Gradle 假设如果.pom
远程存储库中没有文件是因为工件不存在,所以默认情况下它不会查找它。根据发行说明:
如果 Gradle 未能在该部分中定义的存储库中找到模块的元数据文件 (
.pom
或ivy.xml
)repositories { }
,它现在假定该模块不存在于该存储库中。...
artifact()
您可以通过添加元数据源来选择所选存储库的旧行为。
所以解决方案是将其添加到有问题的存储库中,如下所示:
repositories {
maven {
url 'the-repo-url'
metadataSources {
artifact()
}
}
}
推荐阅读
- typescript - 使用其他类型作为变量创建复合类型
- spring-boot - Spring Boot 在“/”上返回奇怪的 JSON。你知道这个 JSON 是什么意思吗?
- node.js - 错误:找不到证书 %USERPROFILE%/.gcb-serve-data/gcb-serve.cer
- amazon-web-services - 使用 AWS CloudHSM 和 osslsigncode 在 Linux 上签署 Windows PE?
- python - 星图,starmap_async python
- c - XCreateImage 预期 char* 而不是 unsigned int*
- docker - 如何访问由于文件错误而退出的 wacore 容器 - “/opt/whatsapp/bin/wait_on_postgres.sh”
- python - 如何获取字典中与键匹配的值的平均值并将其输出到另一个字典
- flutter - 有没有办法查出用户是否在线
- python - 雪问题 - 存储变量时出错