Android编译报错:Duplicate class冲突,拆分模块仍无法解决求助
解决Android编译时类重复冲突的方法
针对你遇到的两个库中com.dm.commonlib.ThreadPoolManager和com.dm.commonlib.Utils类重复的问题,可尝试以下几种解决方法:
方法一:精准排除重复依赖
先执行./gradlew app:dependencies命令查看项目依赖树,明确重复类对应的具体依赖节点。之后在引入模块时,排除其中一个模块里的冲突依赖:implementation project(path: ':smartill') { // 根据依赖树结果,替换为实际的group和module exclude group: 'com.dm', module: 'commonlib' } implementation project(path: ':smartill-mini-plus')以此避免两个模块同时引入包含重复类的依赖。
方法二:配置Gradle打包规则处理重复类
在app模块的build.gradle的android代码块中添加packagingOptions,指定重复类的处理策略:android { // 其他已有配置... packagingOptions { // 保留第一个扫描到的类文件 pickFirst 'com/dm/commonlib/ThreadPoolManager.class' pickFirst 'com/dm/commonlib/Utils.class' // 或者选择排除其中一个类(需确认排除后不影响功能) // exclude 'com/dm/commonlib/ThreadPoolManager.class' // exclude 'com/dm/commonlib/Utils.class' } }注意:使用
pickFirst时要确保保留的类版本能满足两个模块的功能需求,避免出现逻辑异常。方法三:重构依赖结构(仅适用于自研库)
如果tilllib和smart_minilib是你们团队维护的内部库,可以将重复的com.dm.commonlib包抽成独立的Android Library模块,让这两个库都依赖该独立模块,而非各自内嵌重复类,从根源上解决冲突问题。
内容的提问来源于stack exchange,提问作者Santiago Vasquez
相关产品推荐
相关产品推荐

