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

接手项目编译失败:com.google.gson.ExclusionStrategy类重复存在

解决Program type already present: com.google.gson.ExclusionStrategy编译错误

我之前踩过一模一样的坑!这个错误的核心原因是Gson库被重复引入了——哪怕你的项目没直接用到ExclusionStrategy,但你依赖的第三方库大概率有多个都自带了Gson,或者同一库的不同版本导致类重复,最终触发Dex合并冲突。

下面是我亲测有效的解决步骤:

  • 第一步:排查重复依赖源
    先搞清楚到底是哪个依赖在偷偷引入Gson。在项目根目录执行Gradle命令:

    # macOS/Linux
    ./gradlew :sample-mpa-ui:dependencies
    # Windows
    gradlew.bat :sample-mpa-ui:dependencies
    

    执行完后搜索com.google.gson:gson,你会看到整个依赖树里所有引用Gson的条目,重点看有没有多个模块同时引入,或者版本不一致的情况。

  • 第二步:排除重复的Gson依赖
    找到重复引入Gson的那个第三方依赖,在你的Module级build.gradle里给它加上排除规则。比如发现com.xxx:some-library:2.0自带了Gson,就这么写:

    implementation('com.xxx:some-library:2.0') {
        exclude group: 'com.google.gson', module: 'gson'
    }
    
  • 第三步:强制统一Gson版本(可选)
    如果排除后还是有问题,或者多个依赖依赖不同版本的Gson,可以在根目录的build.gradle里强制所有依赖使用同一个稳定版本的Gson:

    allprojects {
        configurations.all {
            resolutionStrategy.force 'com.google.gson:gson:2.8.9' // 可替换为最新稳定版
        }
    }
    
  • 第四步:清理Gradle缓存
    有时候旧缓存会残留冲突文件,执行下面的命令彻底清理后重新构建:

    # macOS/Linux
    ./gradlew clean build --refresh-dependencies
    # Windows
    gradlew.bat clean build --refresh-dependencies
    

补充一下:你看到的错误堆栈transformDexArchiveWithExternalLibsDexMergerForMyProjectModelDebug就是Dex合并阶段出的问题,本质是同一个类在多个Dex包中存在,导致合并失败。

内容的提问来源于stack exchange,提问作者Jean-Bernard Collet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:23:46