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

Android项目Gradle构建失败:Dex转换错误(重复类定义)

解决Android Gradle构建报错:Multiple dex files define Landroid/arch/core/internal/SafeIterableMap$Entry;

嘿,这个问题我之前踩过坑!你遇到的是重复依赖导致的Dex打包冲突——简单说就是android.arch.core.internal.SafeIterableMap$Entry这个类被多个不同的依赖库同时引入了,Dex编译器不知道该用哪一个,所以直接报错罢工了。下面是我亲测有效的解决步骤:

第一步:定位重复依赖的来源

先搞清楚到底是哪些库在重复引入这个类。打开终端,在项目根目录运行以下命令:

# Mac/Linux
./gradlew app:dependencies

# Windows
gradlew app:dependencies

在输出的依赖树里搜索SafeIterableMap,你会看到哪些库依赖了这个类,重点看有没有版本不一致或者重复引入的情况。

第二步:针对性解决冲突

根据定位到的情况,选对应的方案:

方案1:排除重复的依赖模块

如果发现某个第三方库自带了旧版本的android.arch.core:runtime(就是包含这个类的库),直接在依赖声明里排除它:

implementation('com.example:problem-library:1.2.3') {
    exclude group: 'android.arch.core', module: 'runtime'
}

方案2:统一架构组件的版本

如果你在使用Android Architecture Components(比如Lifecycle、ViewModel这些),一定要确保所有相关依赖的版本完全一致,版本不一致很容易导致类重复。可以在build.gradle里统一配置版本变量:

ext {
    arch_components_version = '1.1.1' // 选一个稳定的最新版本
}

implementation "android.arch.core:runtime:$arch_components_version"
implementation "android.arch.lifecycle:extensions:$arch_components_version"
implementation "android.arch.lifecycle:viewmodel:$arch_components_version"

方案3:检查MultiDex配置(针对方法数超65k的项目)

如果你的项目方法数超过了65536,必须启用MultiDex,但配置不当也会引发这类冲突。确认你的配置:

android {
    defaultConfig {
        multiDexEnabled true
    }
}

implementation 'com.android.support:multidex:1.0.3'

然后在自定义的Application类里:

public class MyApp extends MultiDexApplication {
    // ... 其他代码
}

如果不能继承MultiDexApplication,就在attachBaseContext里添加:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

方案4:清理构建缓存

有时候旧的构建缓存会残留冲突文件,试试彻底清理后重新构建:

  • 在Android Studio里点击Build -> Clean Project,然后Build -> Rebuild Project
  • 或者终端运行:
./gradlew clean build

如果以上方法都没解决,把你的app模块build.gradle里的依赖部分贴出来,大家可以帮你精准定位冲突源~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:00:01