构建Android项目时遇无法合并Dex及重复条目错误求助
transformClassesWithMultidexlistForDebug 重复类打包错误 Hey,这个问题我之前帮好几个开发者搞定过——本质就是你的项目里不同依赖库重复引入了同一个Coordinator相关类,导致multidex打包时“撞车”了。咱们一步步来解决:
第一步:揪出重复的依赖根源
首先得搞清楚到底是哪两个依赖在抢这个类。打开Android Studio的Terminal,执行命令查看完整的依赖树:
# Mac/Linux系统 ./gradlew app:dependencies # Windows系统 gradlew app:dependencies
搜索support-core-ui和design相关的条目,看看有没有不同版本的库,或者某个第三方依赖偷偷引入了重复的模块。
第二步:排除重复的依赖模块
假设排查后发现,design库和support-core-ui存在类重叠,那就在build.gradle的依赖配置里把重复的部分排除掉。比如:
implementation 'com.android.support:design:27.1.1' { exclude group: 'com.android.support', module: 'support-core-ui' }
如果是其他第三方依赖带进来的重复类,就对着那个依赖做同样的排除操作,把冲突的模块移除。
第三步:统一所有Support库版本
这是很多人踩坑的关键点——Android Support库的所有模块版本必须完全一致!比如你不能同时用appcompat-v7:27.1.0和design:27.1.1,版本差一点就容易触发冲突。检查你的build.gradle,把所有com.android.support开头的依赖都改成同一个版本(比如全用27.1.1)。
第四步:清缓存后重建项目
改完依赖后,别直接编译,先清掉缓存避免旧文件搞事:
- 点击Android Studio顶部菜单栏的
Build->Clean Project - 然后点击
Build->Rebuild Project - 要是还是不行,干脆手动删掉错误提示里提到的
C:\Users\bahrani.gradle\caches目录,彻底清空缓存后再重新编译
额外建议:考虑迁移到AndroidX
如果你的项目还在用旧的Support库,真心建议迁移到AndroidX——Google官方已经停止维护旧Support库了,AndroidX从根源上解决了很多依赖冲突问题。Android Studio有一键迁移工具:Refactor -> Migrate to AndroidX,跟着提示操作就行。
内容的提问来源于stack exchange,提问作者user1794292

