Android项目运行时出现ZipException重复类错误求助
你遇到的Execution failed for task ':app:transformClassesWithJarMergingForDebug'错误,核心原因是项目中重复引入了同一个Google Play Services类文件(com/google/android/gms/location/places/zzl.class),导致打包时Jar合并冲突。
问题根源分析
从你的依赖配置来看,com.schibstedspain.android:leku:2.3.1这个第三方库内部已经依赖了Google Play Services的Places相关组件,而你又直接在项目中引入了com.google.android.gms:play-services-location:11.8.0(Places模块属于Location库的一部分),两者的依赖版本不一致或者重复打包,就会触发这个重复类错误。
具体解决方案
1. 排查依赖冲突(可选但推荐)
先确认leku库依赖的Google Play Services版本,运行以下Gradle命令查看完整依赖树:
./gradlew app:dependencies
或者在Android Studio右侧的Gradle面板中,找到app -> Tasks -> android -> androidDependencies并运行,在输出中查找leku对应的com.google.android.gms依赖项,确认其版本。
2. 排除leku中的重复依赖
修改app/build.gradle中的leku依赖,排除它内部的Google Play Services相关模块,让它使用你项目中统一的11.8.0版本:
compile ('com.schibstedspain.android:leku:2.3.1') { exclude group: 'com.google.android.gms' }
3. 保持依赖版本一致性
确保所有Firebase和Google Play Services的依赖版本完全一致(你当前配置的11.8.0是统一的,这点很好,继续保持),避免不同版本的库带来的冲突。
4. 清理并重建项目
在Android Studio中执行:
- 菜单栏
Build -> Clean Project - 然后
Build -> Rebuild Project
清理旧的编译缓存,确保新的依赖配置生效。
额外注意事项
- 你已经开启了
multiDexEnabled true,这对解决多DEX问题有帮助,无需调整。 - 检查
libs目录下的jar文件,确保没有包含和Google Play Services相关的重复类文件(当前配置中gson-1.7.1.jar不会引发这个冲突)。
内容的提问来源于stack exchange,提问作者Moody Moadi

