Android Things项目Dex合并失败求助:已开启MultiDex仍未解决
解决DexArchiveMergerException:开启Multidex后仍无法合并Dex的问题
你在开发Android Things + Firebase的运动传感器相机项目时碰到的这个Dex合并错误,我之前在整合Firebase和IoT相关项目时也遇到过,虽然开了multidexenabled true但没解决,大概率是配置不全或者依赖冲突导致的,给你几个实用的排查方向:
先试最基础的清理重建
很多时候编译缓存会搞出奇怪的问题,先执行这两步:- 点击Android Studio菜单栏的
Build->Clean Project - 清理完成后选择
Build->Rebuild Project
不少类似的Dex合并问题,光这一步就能解决。
- 点击Android Studio菜单栏的
重点检查依赖冲突
你的项目同时用到Firebase和Android Things,依赖版本不兼容是重灾区:- 确保所有Firebase组件的版本完全一致,比如
firebase-messaging、firebase-analytics这些,版本号要统一,不能有的用21.x有的用22.x - 排查是否同时混用了Android Support库和AndroidX库,现在Firebase默认依赖AndroidX,如果你的项目里还残留旧的Support库,很容易出现类重复的问题
- 用
./gradlew mobile:dependencies命令生成完整的依赖树,搜索有没有重复出现的库(比如两个不同版本的com.android.support:support-core-utils)
- 确保所有Firebase组件的版本完全一致,比如
补全Multidex的完整配置
只在Gradle里加multidexenabled true是不够的,还要确保Application层的配置:- 如果你的项目有自定义Application类,让它直接继承
MultiDexApplication - 如果不能修改Application的父类,就在
attachBaseContext方法里手动初始化Multidex:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
- 如果你的项目有自定义Application类,让它直接继承
升级Gradle相关工具版本
旧版本的Android Gradle插件可能存在Dex合并的bug,试试升级:- 在项目根目录的
build.gradle里,把com.android.tools.build:gradle升级到稳定的新版本(比如7.4.x系列) - 把app模块里的
compileSdkVersion和targetSdkVersion同步升级到对应兼容的版本(比如33)
- 在项目根目录的
手动排除重复依赖
如果依赖树里发现某个库被多个依赖重复引入,可以在对应的依赖声明里用exclude去掉重复部分,比如:implementation('com.google.firebase:firebase-messaging:23.0.0') { exclude group: 'androidx.core', module: 'core' }
建议先从清理重建开始试,然后重点排查依赖冲突,这两个是这类问题最常见的诱因。如果还是解决不了,可以把你app模块build.gradle里的依赖部分贴出来,能更精准定位问题~
内容的提问来源于stack exchange,提问作者Bjs
相关产品推荐
相关产品推荐

