Gradle调试模式抛出UnknownHostException、ZipException致assembleDebug任务失败
问题产生原因
两个报错存在直接因果关系:
- 首先触发的
java.net.UnknownHostException是Gradle Wrapper执行时需要下载项目指定版本的Gradle压缩包,但此时设备网络不通、DNS解析失败、配置的Gradle下载源地址无效,导致无法正常下载压缩包。 - 后续的
java.util.zip.ZipException: zip END header not found是因为第一次下载失败后,本地残留了不完整的损坏Gradle压缩包,后续执行构建时Gradle Wrapper直接尝试解压该残缺文件,无法识别到合法的zip文件结构就抛出该异常,最终导致assembleDebug任务执行失败,进程退出。
排查步骤
- 验证网络连通性:确认当前设备可以正常访问公网,如果你配置了自定义Gradle镜像源,确认源地址没有拼写错误、可以正常访问。
- 检查本地Gradle缓存文件:打开Gradle Wrapper的默认缓存目录:
- Windows系统路径:
C:\Users\<你的用户名>\.gradle\wrapper\dists - macOS/Linux系统路径:
~/.gradle/wrapper/dists
进入对应你项目配置的Gradle版本的子目录,查看目录内的zip文件大小,如果明显小于官方发布的同版本Gradle压缩包大小,即可确认是下载不完整的损坏文件。
- Windows系统路径:
- 检查项目Gradle Wrapper配置:打开项目根目录下
gradle/wrapper/gradle-wrapper.properties文件,确认distributionUrl字段的配置地址没有拼写错误。
解决方法
- 清理损坏的本地缓存
直接删除上述dists目录下对应版本的Gradle缓存文件夹,也可以直接删除整个dists目录的所有内容,触发后续重新下载。 - 修正网络或下载源配置
- 如果是公网访问异常,切换到可用的网络环境,确认DNS可以正常解析Gradle下载地址。
- 如果是官方源访问速度慢或者无法访问,可以将
distributionUrl替换为国内可用的Gradle镜像源地址。
- 重新执行构建
配置修正完成后,重新执行构建命令即可:
- Linux/macOS执行:
./gradlew assembleDebug - Windows执行:
gradlew.bat assembleDebug
内容的提问来源于stack exchange,提问作者George Jonathan Osafo-Osei
相关产品推荐
相关产品推荐

