You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle同步失败报java.util.zip.ZipException: zip END header not found——Groovy Gradle转Kotlin DSL迁移问题

Gradle同步失败报java.util.zip.ZipException: zip END header not found——Groovy Gradle转Kotlin DSL迁移问题

我刚踩过类似的坑,这个错误大概率和Gradle缓存损坏、依赖包下载不完整,或者Kotlin DSL配置里的细节偏差有关。结合你提供的代码和场景,咱们一步步排查解决:

一、先解决最常见的缓存损坏问题

这个zip头找不到的错误,十有八九是某个依赖包下载到一半中断,导致zip文件损坏了。最快的排查方式是清理Gradle本地缓存:

  • 找到你的Gradle用户目录:Mac/Linux是~/.gradle/caches,Windows是C:\Users\<你的用户名>\.gradle\caches
  • 删除里面的modules-2文件夹(这个文件夹存的是下载的依赖包)
  • 回到Android Studio,重新执行Gradle同步

如果清理缓存后还是报错,再往下看配置里的问题。

二、检查Kotlin DSL配置的细节偏差

对比你提供的Groovy和Kotlin版本的core模块build文件,发现几个容易踩坑的差异:

  1. targetSdk配置位置错误
    原Groovy配置里targetSdk是放在defaultConfig里的,但你转成Kotlin DSL后把它移到了lint和testOptions里,这会导致Android核心配置不完整。正确的写法应该是放回defaultConfig:
    defaultConfig {
        minSdk = BuildConfig.minSdk
        targetSdk = BuildConfig.targetSdk // 移回defaultConfig中
    }
    
  2. minifyEnabled取值不一致
    原Groovy里release构建的minifyEnabled false,但你转成Kotlin DSL后改成了isMinifyEnabled = true。如果你的项目之前没开启混淆,这个改动可能触发ProGuard规则或依赖的兼容性问题,建议先保持和原配置一致:
    release {
        isMinifyEnabled = false // 和原Groovy配置保持一致
        proguardFiles(
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
    }
    
  3. jvmTarget配置的一致性
    原Groovy里用的是BuildConfig.jvmTarget,但Kotlin DSL里你直接写死了JVM_17。虽然如果BuildConfig里的jvmTarget也是17没问题,但最好保持配置逻辑一致,改成从BuildConfig读取:
    kotlin {
        compilerOptions {
            jvmTarget.set(JvmTarget.fromTarget(BuildConfig.jvmTarget))
        }
    }
    

三、检查Gradle Wrapper的完整性

你的gradle-wrapper.properties里用的是gradle-8.14-bin.zip,有可能wrapper的jar文件损坏了。可以:

  • 删除项目根目录下的gradle/wrapper/gradle-wrapper.jar文件
  • 打开终端,执行./gradlew clean build(Windows用gradlew.bat clean build),Gradle会自动重新下载完整的wrapper文件

四、强制刷新依赖

如果上面的方法都没用,试试强制Gradle跳过缓存,重新下载所有依赖:
在终端执行:

./gradlew --refresh-dependencies sync

五、排查依赖声明的正确性

检查你依赖里的libs.hilt.android.compiler,确认在libs.versions.toml(或者对应的版本管理文件)里这个依赖的版本是正确的。如果不确定,可以临时换成硬编码的版本号测试,比如:

kapt("com.google.dagger:hilt-android-compiler:2.48")

如果这样能同步成功,说明是版本管理文件里的配置有问题。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 12:05:28