Gradle彻底卸载需同步删除安装目录、GRADLE_HOME环境变量、Path中相关路径及%USERPROFILE%.gradle用户缓存;仅删目录不清理变量会导致gradle -v报错或Daemon异常;wrapper配置独立生效,需单独检查gradle-wrapper.properties。

Gradle安装目录和GRADLE_HOME必须一起删
Gradle没有安装程序,所谓“卸载”就是手动清除物理路径和环境变量的绑定。只删C:\Gradle或/opt/gradle文件夹,但没动GRADLE_HOME,下次执行gradle -v会直接报错'gradle' is not recognized,或者更隐蔽地加载一个已不存在的路径,导致Daemon启动失败、wrapper反复重下。
操作要点:
- 先用
echo %GRADLE_HOME%(Windows)或echo $GRADLE_HOME(macOS/Linux)确认当前值,再进文件系统删掉它指向的整个目录 - 如果
GRADLE_HOME为空或指向无效路径,说明变量本身已失效,但仍需在环境变量界面里彻底删除该条目,否则某些IDE或脚本仍可能读到空值并触发异常逻辑 - 通过
sdk uninstall gradle或brew uninstall gradle卸载的,也要检查是否残留GRADLE_HOME——包管理器不自动清理这个变量
.gradle用户缓存不清理,wrapper会偷偷复用旧版本
~/.gradle(Windows是%USERPROFILE%\.gradle)不是可选清理项,而是Gradle构建状态的核心存储区。里面包含wrapper/dists/下的已下载发行版、daemon/进程状态、caches/依赖索引,甚至jdks/(某些IDE集成写入的JDK缓存)。不清它,哪怕你重装了新Gradle,项目第一次运行./gradlew build仍可能拉出旧版Daemon,或因缓存校验失败卡在“Downloading gradle-5.6.4-bin.zip…”。
执行命令前请确认:rmdir /s /q "%USERPROFILE%\.gradle"(Windows)或rm -rf ~/.gradle(macOS/Linux)。别跳过这步,尤其当你遇到Could not determine java version from '17.0.2'这类提示时,大概率是.gradle/daemon里存着与当前JDK不兼容的老Daemon进程。
Path里残留的gradle bin路径最易被忽略
很多人只记得删GRADLE_HOME,却放过了Path里硬编码的C:\Gradle\bin或%GRADLE_HOME%\bin。这些条目不会随GRADLE_HOME删除而消失,新开终端后gradle -v仍能运行,但实际调用的是一个早已被删空的路径——此时Windows可能静默 fallback 到./gradlew,而Linux/macOS直接报command not found,排查起来毫无头绪。
验证方式简单直接:
- Windows:运行
where gradle,输出非空即说明Path里还有残留 - macOS/Linux:
which gradle,若返回路径,再ls -l看是否真实存在 - 务必打开系统环境变量编辑器(
rundll32 sysdm.cpl,EditEnvironmentVariables),手动定位并删掉所有含gradle字样的Path条目
Android Studio项目里的wrapper配置会绕过系统Gradle
即使你把系统级Gradle和环境变量全清干净,Android项目仍可能用gradle/wrapper/gradle-wrapper.properties里的distributionUrl自动下载并运行某个版本。这不是“没卸干净”,而是设计如此。但问题在于:如果之前distributionUrl指向的是一个国内镜像404的地址,或版本号写成gradle-6.5-all.zip但实际需要-bin.zip,就会在导入项目时卡死,让你误以为系统环境还有问题。
建议动作:
- 打开任意Android项目,检查
gradle/wrapper/gradle-wrapper.properties中distributionUrl是否为有效官方地址(如https://services.gradle.org/distributions/gradle-8.4-bin.zip) - 删掉项目根目录下的
.gradle和gradle文件夹(注意不是用户主目录那个.gradle) - 不要依赖AS自动下载——提前把对应
-bin.zip丢进~/.gradle/wrapper/dists/对应哈希子目录,避免网络干扰
真正麻烦的从来不是删文件,而是那些跨层级残留:注册表里没清的JavaSoft项会影响JDK探测,IDE里缓存的SDK列表会默认选中已删除的JDK,而.gradle/wrapper/dists/下解压失败的半截目录,会让wrapper反复尝试修复而非报错退出。











