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

Phonegap CLI 7.1.0升级minSdkVersion至26后cordova-facebook-plugin4编译失败求助

问题解答

错误含义解释

duplicate entry: com/google/zxing/aztec/AztecDetectorResult.class 这个错误的核心是Android打包执行Jar合并操作时,发现项目里重复引入了同一个类文件——具体是Zxing条码识别库中的AztecDetectorResult类被至少两个不同的依赖(插件或库)同时包含了,导致编译无法完成。

结合你的场景来看:在修改cordova-facebook-plugin4的minSdkVersion到26后,该插件的依赖库(或插件自身打包的文件)和Crosswalk(或项目中其他插件)都引入了Zxing的相关类,两者冲突触发了这个报错。

解决方法

针对Phonegap/Cordova项目的特性,你可以按以下步骤排查解决:

1. 定位重复依赖的来源

先搞清楚是哪两个插件/库在重复引入Zxing:

  • 执行命令列出所有已安装的插件,初步判断可能的来源:
    cordova plugin list
    
    通常cordova-facebook-plugin4会集成Zxing用于扫码功能,而Crosswalk或其他条码相关插件也可能依赖Zxing。
  • 也可以直接查看platforms/android/build.gradle文件,在dependencies块里找有没有重复的com.google.zxing相关依赖条目。

2. 排除重复的依赖项

找到重复来源后,修改对应插件的plugin.xml来排除重复的Zxing依赖:
比如如果是cordova-facebook-plugin4引入了Zxing,你可以在它的framework依赖配置里添加排除规则:

<!-- 找到插件里类似这样的依赖配置 -->
<framework src="com.google.zxing:core:xxx" />
<!-- 修改为排除重复的模块 -->
<framework src="com.google.zxing:core:xxx" exclude="com.google.zxing" />

如果插件是直接把Zxing的Jar包打包在插件目录里,你可以直接删除该Jar文件,改用项目统一依赖的版本。

3. 统一Zxing依赖版本

如果是多个插件依赖Zxing但版本不一致导致的冲突,你可以在项目的config.xml中强制指定全局的Zxing版本,让所有插件共用同一个版本:

<platform name="android">
    <!-- 替换为你需要的稳定版本,比如3.4.1 -->
    <framework src="com.google.zxing:core:3.4.1" />
</platform>

4. 清理缓存后重新编译

缓存文件可能残留旧的依赖信息,执行以下命令彻底清理后再尝试编译:

cordova clean android
rm -rf platforms/android/build
rm -rf plugins/android.json
cordova prepare android
cordova build android --release

内容的提问来源于stack exchange,提问作者Alessandro Sbenaglia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:31:59