distributionUrl返回404说明配置的Gradle版本在官方源已下线或路径变更,应优先改用-bin.zip、查官网归档页、换镜像或改用file://本地路径,并排查AGP与Gradle版本是否兼容。

gradle-wrapper.properties里的distributionUrl返回404
这说明你项目配置的 Gradle 版本在官方源已下线或路径变更,services.gradle.org 不再提供该 ZIP 文件。Gradle 官方会定期归档旧版本(尤其是 -all.zip),但 gradle-wrapper.properties 仍保留旧 URL,导致构建时触发 404 错误,日志里通常显示类似:Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-6.5-all.zip'。
解决思路不是“重试”或“换代理”,而是确认两点:这个版本是否还被维护、能否换用等效但可访问的变体。
- 打开
gradle/wrapper/gradle-wrapper.properties,找到distributionUrl行 - 把 URL 中的
-all.zip改成-bin.zip(体积更小、更新更久、镜像支持更好) - 检查 Gradle 官网 https://www.php.cn/link/a0318d32cb96f76323313e33d189b3ce,确认该版本是否仍在“Current releases”列表;若已移至 “Older versions”,说明它只保留在归档页,且可能仅提供
-bin.zip - 如果必须用该旧版本,可手动下载对应
-bin.zip,然后用本地 file 协议替代远程 URL(见下一条)
用file://协议指向本地已下载的gradle-bin.zip
当网络不可靠,或某 Gradle 版本官方彻底下线(连归档页都 404),最稳的方式是跳过网络下载,直接喂给 Wrapper 一个本地文件路径。关键在于路径写法和存放位置要匹配 Wrapper 的解析逻辑。
gradle-wrapper.properties 中的 distributionUrl 支持 file:// 协议,但必须满足:
- 路径是**绝对路径**,Windows 下需用正斜杠或双反斜杠,例如:
file:///C:/gradle/gradle-7.2-bin.zip - ZIP 文件必须是完整、未解压的原始发行包(不能是解压后的目录)
- 文件权限正常(macOS/Linux 注意是否被 quarantine 属性拦截)
- 不建议放在项目目录内(易被 git 忽略或误删),推荐统一放在
GRADLE_USER_HOME下的某个子目录,比如~/.gradle/wrapper/offline/
为什么腾讯云/华为云镜像对404无效?
国内镜像(如 https://mirrors.cloud.tencent.com/gradle/)只是 services.gradle.org 的缓存副本,它们不会主动上架已下线的旧版本。所以当你看到 404,先别急着换镜像——大概率是镜像站也没同步那个失效的 URL。
真正有效的做法是:先确认你要的版本是否还在官方归档页可下载;如果在,就把 distributionUrl 改成镜像地址 + 对应路径,例如:
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip
但如果归档页本身已 404,镜像也无能为力。这时候只能降级到一个仍被支持的版本,或改用本地 file 协议。
AGP 与 Gradle 版本不匹配会伪装成404
有时候你以为是 URL 404,其实是 AGP 报错被截断或日志刷屏掩盖了真实原因。例如 AGP 8.5 要求 Gradle 8.6+,但你的 distributionUrl 指向 8.4,Android Studio 可能先尝试下载 8.4,失败后又 fallback 到其他逻辑,最终报出看似无关的 404 或连接超时。
验证方式很简单:
- 查 Android Gradle Plugin 版本映射表(官方文档或
build.gradle里的com.android.tools.build:gradle版本) - 打开
gradle/wrapper/gradle-wrapper.properties,核对distributionUrl中的 Gradle 版本是否落在兼容范围内 - 如果版本偏低,优先升级 Gradle 版本(而非死磕旧版),因为新版
-bin.zip在镜像站存活时间更长、校验更稳定
最常被忽略的是:404 往往不是孤立错误,它背后可能混着版本不兼容、路径写错、甚至 ZIP 文件损坏。不要只盯着 URL 改来改去,先看清楚日志里第一行报错到底来自哪一层。











