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

升级Realm库至4.3.1后出现DexArchiveMergerException问题求助

解决Realm 4.3.1升级后的Dex合并冲突问题

Hey,我之前升级Realm时也碰到过几乎一模一样的Dex合并报错,试了常规的清理构建没用,后来靠这几个步骤解决了,你可以挨个试试:

  • 统一所有模块的Realm版本
    大概率是项目里某个子模块或者依赖库还在用旧的4.2.0版本,和新的4.3.1冲突了。建议在项目根目录的build.gradle里统一配置版本变量:

    ext {
        realmVersion = "4.3.1"
    }
    

    然后所有模块的Realm依赖都用这个变量,比如:implementation "io.realm:realm-android-library:$realmVersion",这样能彻底避免版本不一致的问题。

  • 排查并排除重复依赖
    运行./gradlew app:dependencies(Windows系统用gradlew.bat app:dependencies)生成依赖树,仔细找有没有其他库间接引入了旧版Realm或者重复的dex相关依赖。如果发现了,用exclude语法把重复的部分去掉,比如:

    implementation('第三方依赖库的坐标') {
        exclude group: 'io.realm'
    }
    
  • 开启MultiDex(如果还没启用)
    升级库后可能新增了一些方法,导致总方法数超过了65536的限制,触发Dex合并失败。在app/build.gradle里开启MultiDex:

    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    dependencies {
        implementation 'com.android.support:multidex:1.0.3'
    }
    

    要是你的自定义Application没有继承MultiDexApplication,记得在attachBaseContext方法里初始化:

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
    
  • 手动清理深层缓存
    有时候Android Studio的“清理/缓存失效”不够彻底,你可以手动删除这些目录:

    • 项目根目录下的.gradle文件夹
    • app/build文件夹
    • 系统用户目录下的.gradle/caches文件夹(比如Windows的C:\Users\你的用户名\.gradle\caches)
      删完后重新同步项目再构建,应该能清除残留的旧编译文件。
  • 核对注解处理器版本
    升级Realm库的同时,注解处理器的版本也要对应上,不然容易生成冲突的dex文件。在app/build.gradle里检查:

    // Java项目用这个
    annotationProcessor "io.realm:realm-android-compiler:$realmVersion"
    // Kotlin项目换成kapt
    kapt "io.realm:realm-android-compiler:$realmVersion"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:06:58