Android Studio更新后Gradle同步失败问题及底层原理咨询
解决Gradle版本不匹配的疑难问题(附实用排查指南)
一、先解读你碰到的这个诡异错误
我之前也踩过一模一样的坑:明明已经把gradle-wrapper.properties里的distributionUrl改成了gradle-5.4.1-all.zip,但AS还是死咬着说当前用的是5.1.1。这大概率是两种情况导致的:
- 缓存残留:AS的Gradle缓存里还存着旧版本的文件,同步时没优先读取你新改的wrapper配置
- Gradle来源选错了:你在AS设置里指定了本地手动安装的Gradle 5.1.1,而非使用项目自带的wrapper版本
二、如何升级Android Studio捆绑/使用的Gradle
其实更推荐用项目级的Gradle Wrapper来管理版本(团队协作时所有人用同一版本,不会出幺蛾子),但如果要调整AS默认用的Gradle,可以这么操作:
- 打开AS设置:Windows/Linux点
File > Settings,Mac点Android Studio > Settings - 导航到
Build, Execution, Deployment > Build Tools > Gradle - 在
Use Gradle from选项里:- 优先选
Gradle wrapper (recommended):强制用项目根目录下的wrapper配置,彻底避免版本不一致问题 - 要是想改用AS捆绑的版本,选
Embedded Gradle——这个版本是和你的AS版本绑定的,比如AS 3.6对应Gradle 5.6.4,AS 4.0对应Gradle 6.1.1,你升级AS时它会自动跟着更新
- 优先选
- 点
Apply后重启AS,再同步项目就ok了
另外,还有个更省心的方法改wrapper版本:打开File > Project Structure > Project,在Gradle version下拉框里选你要的5.4.1,AS会自动帮你更新gradle-wrapper.properties并下载对应版本,不用手动改文件。
三、为什么Gradle兼容性问题总找上门?怎么自主排查?
为啥总踩坑?
核心原因是Android Gradle插件(AGP)和Gradle本身有严格的版本绑定关系,而且AS版本又和AGP版本强关联:
- 比如AGP 3.6.x必须搭配Gradle 5.6.4及以上,AGP 4.0.x必须配Gradle 6.1.1及以上
- 你升级AS后,AS会默认提示你升级AGP,但如果Gradle版本没跟上,就会炸;反过来,手动改了Gradle版本但没对应升级AGP,也会出问题
自主排查的通用流程
以后再碰到Gradle同步错误,按这个步骤走,基本能解决95%的问题:
- 清缓存+重启AS:这是最有效的“玄学解药”
- 操作:
File > Invalidate Caches...,勾选Clear file system cache and local history,然后点Invalidate and Restart
- 操作:
- 检查两个核心配置文件:
- 根目录
build.gradle里的AGP版本:找到classpath 'com.android.tools.build:gradle:X.X.X'这一行,记下来X.X.X gradle-wrapper.properties里的Gradle版本:看distributionUrl=https\://services.gradle.org/distributions/gradle-Y.Y.Y-all.zip里的Y.Y.Y- 对照版本对应关系(AS里
Project Structure选版本时会自动提示兼容的版本,或者看AS的release说明),确保Y.Y.Y符合X.X.X的要求
- 根目录
- 确认AS的Gradle来源:回到Gradle设置界面,确保选的是
Gradle wrapper,而不是本地某个旧版本的Gradle路径 - 深挖同步日志:你提供的日志里已经显示
NDK Resolution Outcome: Project settings: Gradle model version=5.4.1,说明项目配置是对的,但实际运行用的是5.1.1——这时候仔细看日志里有没有类似Using local Gradle distribution at...的行,找到那个旧版本的路径,要么删掉要么改设置 - 检查子模块配置:如果项目有多个子模块,有些子模块可能单独指定了Gradle版本,要统一用根目录的配置
内容的提问来源于stack exchange,提问作者interstar
相关产品推荐
相关产品推荐

