Flutter项目运行时Gradle压缩包异常问题求助
Flutter真机运行报错:zip END header not found 解决办法
问题重现
在真机运行Flutter项目时出现以下错误:
Exception in thread "main" java.util.zip.ZipException: zip END header not found at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1607) at java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1497) at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1504) at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1308) at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1271) at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:733) at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:850) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:248) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:177) at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:191) at org.gradle.wrapper.Install.unzip(Install.java:214) at org.gradle.wrapper.Install.access$600(Install.java:27) at org.gradle.wrapper.Install$1.call(Install.java:74) at org.gradle.wrapper.Install$1.call(Install.java:48) at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65) at org.gradle.wrapper.Install.createDist(Install.java:48) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
已尝试过删除用户目录.gradle、更新Flutter SDK、修改项目Gradle版本为4.2.0并执行flutter clean/flutter pub get,问题依旧。
解决方案
1. 彻底清理Gradle缓存
- 删除用户目录下的
.gradle文件夹(Windows:C:\Users\<你的用户名>\.gradle;Mac/Linux:/Users/<你的用户名>/.gradle) - 删除项目根目录下的
.gradle和build文件夹 - 执行命令:
flutter clean
2. 手动下载对应版本Gradle压缩包
- 打开项目中
gradle/wrapper/gradle-wrapper.properties文件,找到distributionUrl字段,复制对应的Gradle下载链接(例如https://services.gradle.org/distributions/gradle-7.5-all.zip) - 手动下载该压缩包,确认文件完整无损坏(对比官方标注的文件大小)
3. 替换缓存中的损坏压缩包
- 进入用户目录
.gradle/wrapper/dists,找到对应版本的Gradle文件夹(如gradle-7.5-all) - 打开文件夹内随机命名的子目录,将手动下载的压缩包替换原有文件;或直接解压压缩包到该目录,确保解压后包含
gradle-x.x.x格式的文件夹
4. 检查Java版本兼容性
- 执行
java -version查看当前Java版本,确保与Gradle版本匹配:- Gradle 4.x:推荐Java 8
- Gradle 5.x-6.x:Java 8-11
- Gradle 7.x+:Java 11+
- 版本不兼容时,切换对应Java版本(可通过Android Studio的SDK Manager配置)
5. 重新运行项目
执行以下命令后再次尝试真机运行:
flutter pub get flutter run
内容的提问来源于stack exchange,提问作者pooria rm
相关产品推荐
相关产品推荐

