项目未做修改突发Unable to merge dex错误,多种方案尝试无效
嘿,我太懂这种毫无预兆撞上DexArchiveMergerException的糟心感了!既然你试过常规方案都没用,咱们来搞点针对性的操作:
进阶排查&修复方案
- 彻底清缓存重建:缓存有时候会藏着奇奇怪怪的问题,先执行命令清干净:
然后重新编译:./gradlew clean./gradlew assembleDebug - 揪出重复依赖:很多时候是不同版本的同一库在打架,跑这个命令生成依赖树:
仔细找有没有重复的库(比如support系列、Google Play Services),把它们统一成同一个版本。比如同时存在./gradlew app:dependenciescom.android.support:appcompat-v7:27.x和28.x,就全改成同一个版本号。 - 强制开启MultiDex:如果你的APP方法数超过65K,没开MultiDex大概率会触发这个错误。在app模块的
build.gradle里配置:
要是你有自定义Application类,让它继承android { defaultConfig { multiDexEnabled true } } dependencies { implementation 'com.android.support:multidex:1.0.3' }MultiDexApplication;没有的话,就在attachBaseContext方法里加一行MultiDex.install(this)。 - 排除第三方库的冲突依赖:有些第三方SDK(比如广告、支付类)会自带重复的support库,用
exclude把冲突的模块去掉:implementation('com.example:some-third-party-sdk:1.0.0') { exclude group: 'com.android.support', module: 'appcompat-v7' } - 更新Gradle相关工具:旧版本的Gradle插件可能有已知的dex合并bug,把根目录
build.gradle里的com.android.tools.build:gradle升级到最新稳定版,同时把app模块的buildToolsVersion也同步更新。 - 统一Java版本:确保项目的Java版本和Gradle兼容,在app的
build.gradle里加上:android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
内容的提问来源于stack exchange,提问作者Fatima
相关产品推荐
相关产品推荐

