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

Proguard重复Zip条目(support v13版本冲突)报错求助

解决Duplicate zip entry错误的方案

这个Duplicate zip entry错误本质是项目打包过程中出现了重复的类文件,尤其是Desugar(字节码转换)和ProGuard(混淆)阶段的冲突导致的。我帮你梳理几个针对性的解决方案,你可以一步步排查:

1. 排查依赖重复

首先用Gradle命令查看完整的依赖树,找出重复引入的库:

./gradlew app:dependencies

找到重复的依赖后,在build.gradle的依赖声明里用exclude排除冗余部分,比如:

implementation('com.example.library:xyz:1.0') {
    // 示例:排除重复的support-v4库
    exclude group: 'com.android.support', module: 'support-v4'
}

2. 清理构建缓存

缓存的旧构建文件经常会引发这类奇怪的重复问题,先清理再重新构建:

./gradlew clean
./gradlew assembleDebug

3. 调整Desugar配置

如果你的项目启用了Java 8+特性,Desugar的字节码转换可能和ProGuard冲突。检查build.gradle里的Desugar配置,确保版本和Gradle插件兼容:

android {
    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // 使用与Gradle插件匹配的Desugar版本
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

4. 优化ProGuard规则

ProGuard处理时如果没正确排除重复类,也会触发错误。在proguard-rules.pro里添加针对性的规则:

// 避免重复类引发的警告
-dontwarn com.example.**
// 保留特定类不被混淆(如果是重复类的来源)
-keep class com.example.** { *; }

同时检查项目中是否有多个ProGuard配置文件,避免规则冲突。

5. 检查多模块重复类

如果是多模块项目,确认是否有模块之间重复定义了相同的类,或者重复引入了同一个本地库/模块,导致打包时重复打包。

从你提供的build.gradle片段来看,先确保Maven仓库配置没有重复引入相同的源,避免依赖被多次下载。MessageDigest的导入本身不会引发这个问题,但要确认相关加密依赖是否存在版本冲突。

内容的提问来源于stack exchange,提问作者Muhammad Zeshan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:10:28