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

使用Cordova搭配Android@6.2.3遇重复类ZipException错误求助

解决Cordova Android@6.2.3中Jar合并时的重复类错误

我之前维护老Cordova项目(搭配Android@6.2.3)时,也碰到过完全一样的ZipException: duplicate entry错误,折腾了好几天才理清根源,给你几个实用的解决方案:

1. 定位并排除重复的ZXing依赖

这个错误的核心是多个依赖库同时引入了ZXing的AztecDetectorResult类,首先得找出到底是哪两个模块在重复引入:

  • 在项目根目录执行命令查看依赖树:
    ./gradlew app:dependencies
    
  • 在输出里搜索zxing,你会看到至少两个不同的依赖路径包含这个库(比如一个来自Cordova扫码插件,另一个可能来自某个第三方SDK)。
  • 找到冲突的依赖后,在build.gradle的dependencies块里,给其中一个依赖加上排除规则:
    dependencies {
        // 假设是cordova-plugin-scanner插件带来的重复依赖
        compile('cordova-plugin-scanner') {
            exclude group: 'com.google.zxing'
        }
    }
    

2. 修复冲突的Cordova插件

有些老Cordova插件会把ZXing的jar包直接打包到插件里,而不是通过gradle依赖引入,这就很容易和其他依赖冲突:

  • 找到你的项目中用到的扫码/条码相关插件,打开它的plugin.xml文件;
  • 查找里面是否有类似<source-file src="libs/zxing-core.jar" target-dir="libs" />这样的配置;
  • 如果有,直接删除这行配置,改成通过gradle依赖引入ZXing(确保版本和项目其他依赖一致):
    <framework src="com.google.zxing:core:3.3.0" />
    
  • 然后重新移除并添加该插件:
    cordova plugin remove cordova-plugin-scanner
    cordova plugin add ./path/to/modified-plugin
    

3. 临时绕过(不推荐,仅应急用)

如果暂时找不到冲突根源,可以让Gradle在合并Jar时自动选择第一个找到的类,作为临时解决方案:
在build.gradle的android节点下添加packagingOptions配置:

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    // 其他配置...

    packagingOptions {
        pickFirst 'com/google/zxing/aztec/AztecDetectorResult.class'
        // 如果还有其他重复类,继续添加对应的路径
    }
}

⚠️ 注意:这个方法只是掩盖问题,可能会导致某些功能异常,建议排查出根源后用前两个方法彻底解决。

另外你提到这个错误仅在build.gradle特定状态时出现,建议对比正常和异常版本的build.gradle,重点看是否新增了插件、修改了依赖版本或者调整了configurations相关配置,这些变化很可能就是引入重复依赖的原因。

内容的提问来源于stack exchange,提问作者Pierrick Martellière

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:08:50