You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:24:19