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-facebook-plugin4会集成Zxing用于扫码功能,而Crosswalk或其他条码相关插件也可能依赖Zxing。cordova plugin list - 也可以直接查看
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
相关产品推荐
相关产品推荐

