Android Studio Gradle同步失败:依赖库无法解析求助
解决方案:Gradle同步失败无法解析依赖且报401错误
核心问题定位
报错提示从https://repo.spring.io/libs-milestone获取依赖pom时返回401,说明你的Gradle配置中该仓库被优先用来查找这两个非Spring系的依赖,但这两个依赖根本不在这个仓库内,且该仓库需要认证导致权限错误。结合同一分支在其他设备正常运行的情况,问题大概率出在本地Gradle全局配置异常或项目仓库优先级设置错误。
步骤1:检查并修正全局Gradle配置
打开本地全局Gradle配置文件:
- Windows:
C:\Users\<你的用户名>\.gradle\gradle.properties - macOS/Linux:
~/.gradle/gradle.properties
同时检查~/.gradle/init.d/下的脚本文件、或本地Maven配置settings.xml(若有配置)。
如果发现以下类似指向Spring仓库的配置,直接删除或注释:
# 需移除/注释的异常配置示例 repositories.spring.url=https://repo.spring.io/libs-milestone repositories.spring.username=xxx repositories.spring.password=xxx
这类配置会强制Gradle优先从Spring仓库拉取所有依赖,干扰正常公共依赖的解析路径。
步骤2:修正项目仓库配置
确保项目根目录的settings.gradle(或settings.gradle.kts)中,公共仓库优先级高于私有仓库,示例配置如下:
pluginManagement { repositories { google() mavenCentral() // 若旧版本依赖需要,可添加jcenter(注意jcenter已归档,但旧依赖仍可访问) // jcenter() // Spring相关仓库放在最后,仅针对Spring系依赖生效 maven { url 'https://repo.spring.io/libs-milestone' } } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() // jcenter() maven { url 'https://repo.spring.io/libs-milestone' } } }
关键是让mavenCentral()或jcenter()优先于Spring仓库,确保Gradle先去公共仓库查找目标依赖。
步骤3:强制指定依赖的仓库来源(顽固情况适用)
如果仓库优先级调整后仍无效,可在模块的build.gradle中为这两个依赖强制指定仓库:
dependencies { // 为ijkplayer指定公共仓库 implementation('tv.danmaku.ijk.media:ijkplayer-java:0.8.8') { repositories { mavenCentral() // jcenter() } } // 为glide-transformations指定公共仓库 implementation('jp.wasabeef:glide-transformations:2.0.2') { repositories { mavenCentral() // jcenter() } } }
此配置会让Gradle直接从指定仓库拉取目标依赖,跳过其他仓库的干扰。
步骤4:清理Gradle缓存
删除本地Gradle缓存目录,清除缓存的错误仓库信息:
- Windows:
C:\Users\<你的用户名>\.gradle\caches - macOS/Linux:
~/.gradle/caches
删除后重新执行Gradle同步操作。
内容的提问来源于stack exchange,提问作者Argus Waikhom
相关产品推荐
相关产品推荐

