在我最近更换电脑并配置好开发环境后,从代码仓库拉取分支时解决完其他报错之后就持续出现这样的错误,类似这种:
> Could not resolve all files for configuration:……
……
> Could not find push-6.12.0.300.aar (com.huawei.hms:push:6.12.0.300).
Searched in the following locations:
……
然后下面一堆这种东西:
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ': ……
Caused by: org.gradle.internal.resolve.ArtifactNotFoundException: Could not find agconnect-core-1.7.2.300.jar (com.huawei.agconnect:agconnect-core:1.7.2.300).
Caused by: org.gradle.internal.resolve.ArtifactNotFoundException: Could not find agconnect-core-1.7.2.300.jar (com.huawei.agconnect:agconnect-core:1.7.2.300).
总之就是在Gradle 构建时无法找到 com.huawei.agconnect:agconnect-core:……
的依赖或者说是无法从配置的仓库中解析到该依赖。
首先检查下项目中的build.gradle文件类似是这样的:
allprojects {
repositories {
mavenCentral()
maven { …… }
google()
……
maven { url 'https://developer.huawei.com/repo/' } // 华为官方仓库
}
}
这样本身是没问题的,因为Gradle 在解析依赖时,会按照 repositories 中定义的顺序依次查找依赖。如果某个依赖在第一个仓库中找到,Gradle 就不会继续查找后续的仓库。而且项目在所有其他的电脑上运行也都是没有问题的,所以我就把配置华为仓库代码放到了repositories的第一行,结果项目就水灵灵的跑起来了,没有任何问题。
但是只要把配置代码恢复原样,就还是会报一摸一样的错,我寻思那也不能每次写代码的时候都改一下配置再写,万一哪天忘记改回去提交了影响远程仓库的代码那就不太好了,于是我就找了几种针对本地环境的解决方案,确保不修改仓库代码:如下:
1. 使用 init.gradle 配置全局仓库
在本地配置全局的 init.gradle 文件,确保 Gradle 优先从华为仓库查找依赖。
操作步骤:
上找到或创建 Gradle 的全局配置文件:
文件路径:~/.gradle/init.gradle(用户主目录下的 .gradle 文件夹)。
在 init.gradle 中添加以下内容:
allprojects {
repositories {
maven { url 'https://developer.huawei.com/repo/' }
mavenCentral()
google()
}
}
2、使用本地 gradle.properties 文件
在本地配置 gradle.properties 文件,动态调整仓库顺序。
操作步骤:
找到或创建 Gradle 的本地配置文件:文件路径:~/.gradle/gradle.properties(用户主目录下的 .gradle 文件夹)。在 gradle.properties 中添加以下内容:
systemProp.gradle.repositories=huawei,central,google
systemProp.gradle.repository.huawei.url=https://developer.huawei.com/repo/
systemProp.gradle.repository.central.url=https://repo.maven.apache.org/maven2/
systemProp.gradle.repository.google.url=https://maven.google.com/
然后重新运行
3、手动下载依赖并添加到本地 Maven 仓库
操作步骤:
- 在可以运行的电脑上找到所需的依赖文件(通常位于 ~/.gradle/caches/modules-2/files-2.1)。
- 将这些文件复制到不能正常运行电脑的相同路径下。
- 重新运行 Gradle 构建
方法二我试过没有生效,方法三暂时没试,方法一是可以实现的,大家可以试试看,或者有没有更好的解决方法欢迎交流