项目Gradle出现Unable to merge dex错误,启用MultiDex后仍报错
解决Android Dex合并及Multidex生成失败的问题
我之前踩过一模一样的坑,给你整理几个亲测有效的解决方案,按顺序试试:
先彻底清理项目缓存
很多时候这类dex问题都是缓存搞的鬼。先执行命令行:./gradlew clean然后手动删除项目根目录下的
.gradle文件夹、app模块里的build文件夹,最后重新执行./gradlew assembleDebug试试。检查并移除重复依赖
重复或版本不一致的依赖是dex合并失败的重灾区。用这个命令查看你的依赖树:./gradlew app:dependencies重点看
com.android.support(或AndroidX)相关的库,有没有多个版本同时存在,或者某个第三方库偷偷引入了旧版本的依赖。比如发现某个库自带了旧版support-v4,可以这样排除:implementation('第三方库的依赖') { exclude group: 'com.android.support', module: 'support-v4' }确保Multidex配置完整
只加multiDexEnabled true是不够的:- 如果你的minSdkVersion低于21,必须添加Multidex依赖:
// 非AndroidX项目 implementation 'com.android.support:multidex:1.0.3' // AndroidX项目 implementation 'androidx.multidex:multidex:2.0.1' - 要么让你的Application类继承
MultiDexApplication,要么在自定义Application的attachBaseContext方法里手动初始化:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
- 如果你的minSdkVersion低于21,必须添加Multidex依赖:
对齐Gradle插件与SDK版本
版本不兼容也会导致这类IO异常。比如Gradle插件4.0+建议搭配buildToolsVersion 29.0.2及以上,如果你用的是旧版插件,试着升级到稳定版,同时同步更新buildToolsVersion和compileSdkVersion。检查AndroidX与Support库混用情况
如果你的项目已经迁移到AndroidX,绝对不能同时保留support库的依赖,全部替换成对应的AndroidX库,否则会出现各种冲突。
内容的提问来源于stack exchange,提问作者Mohamed Aoutir
相关产品推荐
相关产品推荐

