修正HillfortStore类包名后触发:app:transformClassesWithDexBuilderForDebug错误求助
我之前也踩过一模一样的坑!当你修正了类的包名,但项目里还残留着旧包名的编译产物或者类文件时,就会触发这种Dex构建冲突错误。下面是几个亲测有效的解决步骤:
彻底清理编译产物并重建项目
Android Studio的编译缓存里大概率还存着旧包名的.class和.dex文件,先执行这两步:- 点击菜单栏的
Build > Clean Project - 接着点击
Build > Rebuild Project
这一步能把所有旧的编译产物清空,重新基于新包名生成完整的编译文件。
- 点击菜单栏的
检查项目中是否存在重复类
有时候旧包名的HillfortStore类可能还藏在项目的某个角落——比如你没删干净的备份文件、版本控制拉下来的旧代码,甚至是某个模块的测试目录里。去项目的文件系统里手动排查一下,确保只有修正后包名的HillfortStore类存在,把重复的旧类彻底删除。排查跨模块/第三方库的引用
如果这个HillfortStore类被其他模块或者第三方依赖引用了,一定要确认那些地方的导入包名也都同步修正了。另外,要是不同模块里出现了全类名相同的类,也会触发Dex的重复定义错误,仔细核对跨模块的引用路径。Invalidate Caches 重置IDE缓存
如果上面的方法都没解决问题,试试Android Studio的终极解决方案:点击File > Invalidate Caches...,勾选Invalidate and Restart。这会清空IDE的所有缓存和索引,很多奇奇怪怪的编译问题都能靠这招搞定。
顺便说下为什么之前错包名还能正常运行:其实是因为当时类的实际包名和你导入的包名是一致的(虽然都是错的),编译系统能正确找到对应的类文件并打包进dex。但修正包名后,新旧两个全类名的类(旧错包名和新正确包名)同时存在于编译过程中,Dex构建时无法处理重复的类定义,就抛出了这个错误。
内容的提问来源于stack exchange,提问作者John O Sullivan

