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

Android项目因两依赖引用同一组件触发DexArchiveMergerException

解决Android依赖冲突导致的Dex合并失败问题

这问题我碰到过好多次了!你遇到的org.gradle.api.tasks.TaskExecutionException加上Program type already present错误,本质就是两个依赖库重复引入了同一个组件(可能是同一版本,也可能是不同版本),导致Dex合并时检测到重复类,直接抛出异常罢工了。给你一步步拆解解决办法:

第一步:定位冲突的依赖组件

首先得搞清楚到底是哪个组件被重复依赖了,最直接的方式是查看完整的依赖树:

  • Mac/Linux终端执行:./gradlew app:dependencies
  • Windows命令行执行:gradlew.bat app:dependencies

或者用Android Studio的可视化工具:打开右侧Gradle面板,找到你的app模块,展开Tasks→android,双击androidDependencies,就能在控制台看到所有依赖的层级关系。

然后在输出里搜索报错信息中Program type already present:后面跟着的类名,就能定位到是哪两个依赖重复引入了这个组件。

第二步:排除重复的依赖

找到冲突组件后,只需要在其中一个依赖声明里排除掉这个重复组件就行。举个例子,假设冲突组件是com.example:core-lib,可以这样修改依赖配置:

dependencies {
    implementation('<dependency #1>') {
        // 排除指定组和模块的重复依赖
        exclude group: 'com.example', module: 'core-lib'
    }
    implementation('<dependency #2>')
}

如果拿不准排除哪一个,优先保留对你项目功能更重要的那个依赖版本对应的组件。

第三步:强制统一依赖版本(可选)

如果多个依赖都依赖同一个组件的不同版本,也可以强制让Gradle使用指定版本的组件,从根源避免版本不一致导致的冲突。在app模块的build.gradle里添加这段配置:

android {
    // 你的其他Android配置...
}

configurations.all {
    resolutionStrategy.force 'com.example:core-lib:1.5.0' // 替换成你需要的目标版本号
}

dependencies {
    // 你的依赖声明...
}

额外补充

如果上面的方法都试过还是不行,可以检查是否开启了MultiDex(当项目方法数超过65536时需要)——虽然这一般不是重复类问题的直接原因,但可以作为兜底方案:
在build.gradle的android块里添加:

android {
    defaultConfig {
        // 其他配置...
        multiDexEnabled true
    }
}

同时在依赖里添加:implementation 'androidx.multidex:multidex:2.0.1'(使用AndroidX的情况下)

内容的提问来源于stack exchange,提问作者Coach Roebuck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:32:01