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

如何解决Android编译报错:Unable to merge dex

解决Android编译时的DexArchiveMergerException错误

你在编译Android应用时碰到了这个棘手的报错:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

而且已经在app.build里开启了multiDexEnabled true但问题依然存在,你的app.build配置如下:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.rutunjay.retrofit_example"
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
dependencies {
    testImplementation 'junit:junit:4.12'
    compile 'android.arch.lifecycle:runtime:1.0.0-alpha1'
    compile 'android.arch.lifecycle:extensions:1.0.0-alpha1'
    annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha1"
}

别担心,除了开启MultiDex,还有几个实用的方法可以解决这个问题:

1. 清理并重建项目

先从最基础的操作入手,很多时候只是缓存堆积导致的问题:

  • 点击Android Studio菜单栏的Build -> Clean Project
  • 完成后再点击Build -> Rebuild Project
    等待重建完成后,再尝试编译看看是否解决。

2. 排查依赖冲突

Dex合并失败最常见的原因就是依赖库版本冲突。你可以这样排查:

  • 打开Android Studio的Terminal,运行命令:
    (Mac/Linux)./gradlew app:dependencies
    (Windows)gradlew app:dependencies
  • 查看输出的依赖树,重点找是否有重复引入的库(比如不同版本的support库、lifecycle相关库)
  • 如果发现冲突,在dependencies块中强制指定统一版本,示例:
    configurations.all {
        resolutionStrategy.force 'android.arch.lifecycle:runtime:1.0.0-alpha1'
    }
    

虽然你的lifecycle依赖版本一致,但可能存在其他隐式依赖的冲突,仔细排查下。

3. 手动添加MultiDex依赖

虽然你的minSdkVersion是21(系统原生支持MultiDex),但有时候还是需要手动引入依赖包来确保兼容性:
在dependencies中添加:

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

然后确保你的Application类正确初始化MultiDex:

  • 如果你的Application类继承自Application,在onCreate方法中添加:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        MultiDex.install(this);
        super.onCreate(savedInstanceState);
    }
    
  • 或者直接让你的Application类继承MultiDexApplication。

4. 关闭Instant Run

Instant Run的热替换机制有时候会干扰Dex合并,你可以尝试关闭它:

  • 打开File -> Settings(Windows/Linux)或Android Studio -> Preferences(Mac)
  • 找到Build, Execution, Deployment -> Instant Run
  • 取消勾选Enable Instant Run to hot swap code/resource changes on deploy

5. 确认Java版本配置

你的compileOptions已经设置了Java 8,还要确保Android Studio的JDK配置也是Java 8:

  • 打开File -> Project Structure -> SDK Location
  • 检查JDK location是否指向Java 8的安装目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:17:29