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

求助解决DexArchiveMergerException:无法合并dex(附Gradle配置)

解决com.android.builder.dexing.DexArchiveMergerException: 无法合并dex的问题

兄弟,这个Dex合并报错我简直太熟了,几乎每个Android开发者都踩过这个坑。结合你给出的Gradle配置,给你几个针对性的解决方案,按顺序试,大概率能解决:


1. 先揪出依赖冲突(最常见的元凶)

Dex合并失败90%都是因为重复依赖或者版本不一致的库,尤其是Android Support库。你用了compileSdkVersion 27,所有support相关的库版本必须统一成27.x.x的稳定版,不然很容易冲突。

  • 先执行命令生成依赖树,看看哪里出问题:
    # Mac/Linux
    ./gradlew app:dependencies
    
    # Windows
    gradlew.bat app:dependencies
    
  • 找出版本不统一的库(比如ButterKnife可能偷偷引入了高版本的support库),然后在android块下面添加强制统一版本的配置:
    configurations.all {
        resolutionStrategy {
            // 把这里的版本换成你项目里用的27.x.x版本
            force 'com.android.support:appcompat-v7:27.1.1'
            force 'com.android.support:support-v4:27.1.1'
            force 'com.android.support:design:27.1.1'
            // 其他冲突的support库都可以加在这里
        }
    }
    

2. 彻底清理缓存重建项目

有时候AS的缓存会抽风,导致奇奇怪怪的编译错误,先清干净再说:

  • 点击Android Studio顶部菜单栏的Build > Clean Project
  • 然后点击Build > Rebuild Project
  • 如果还是不行,手动删除项目根目录下的.gradle文件夹和app/build文件夹,重启AS再重新编译

3. 补全MultiDex的完整配置

你已经开了multiDexEnabled true,但还需要两步才能让MultiDex完全生效:

  • 在dependencies块里添加MultiDex的依赖:
    implementation 'com.android.support:multidex:1.0.3'
    
  • 调整你的Application类:
    • 如果你的Application是继承自Application,改成继承MultiDexApplication;
    • 如果没法改父类,就在attachBaseContext方法里初始化MultiDex:
      @Override
      protected void attachBaseContext(Context base) {
          super.attachBaseContext(base);
          MultiDex.install(this);
      }
      

4. 换掉不稳定的Build Tools版本

你用的buildToolsVersion '28.0.0-rc1'是候选版本,兼容性很差,换成和compileSdkVersion 27匹配的稳定版:

buildToolsVersion '27.0.3'

5. 检查是否有重复引入的依赖

比如有些库你既加了jar包又加了implementation依赖,或者重复声明了同一个库。仔细检查你的dependencies块,把重复的依赖删掉。


如果试完这些还是不行,把你的完整dependencies块和buildType配置贴出来,我再帮你排查细节。

内容的提问来源于stack exchange,提问作者Iman Marashi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:32:37