Android构建报错:com.android.dex.DexException重复定义FirebaseMessaging
解决com.android.dex.DexException: Multiple dex files define Lcom/google/firebase/messaging/FirebaseMessaging; 错误
这个错误我之前帮不少开发者解决过,核心原因就是项目中重复引入了Firebase Messaging相关的类,导致Dex编译器打包时遇到重复定义的冲突。结合你的情况,我整理了几个针对性的解决方案:
1. 排查并移除重复的依赖
首先你需要明确项目里哪些依赖引入了Firebase Messaging:
- 打开终端,进入项目根目录,执行命令查看依赖树:
(Windows系统用./gradlew app:dependenciesgradlew.bat app:dependencies) - 在输出结果里搜索
firebase-messaging,你会发现可能同时存在直接依赖和间接依赖(比如某个第三方库内部也引入了Firebase Messaging)。 - 找到重复的依赖后,用
exclude语法移除多余的引入,比如如果某个第三方库带来了重复依赖,可以这样写:implementation('com.example.third-party:library:1.0.0') { exclude group: 'com.google.firebase', module: 'firebase-messaging' }
2. 统一Firebase组件的版本
Firebase的各个组件版本不一致也容易引发这类冲突,建议你统一管理版本:
- 在项目根目录的
build.gradle里添加版本变量:buildscript { ext { // 注意:你的compileSdkVersion是23,这里要选支持23的Firebase版本,比如10.2.6 firebaseVersion = "10.2.6" } repositories { google() jcenter() } // ...其他配置 } - 然后在app模块的
build.gradle里引用统一版本的依赖:implementation "com.google.firebase:firebase-messaging:$firebaseVersion"
3. 启用Multidex(可选但推荐)
如果你的项目方法数较多,或者冲突伴随方法数超限问题,可以开启Multidex:
- 在app模块的
build.gradle的defaultConfig里添加:defaultConfig { compileSdkVersion 23 buildToolsVersion "25.0.2" // ...其他配置 multiDexEnabled true } - 添加Multidex依赖(对应你的support库版本):
implementation 'com.android.support:multidex:1.0.3' - 最后,让你的Application类继承
MultiDexApplication,或者在attachBaseContext方法里初始化:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
4. 清理缓存并重建项目
有时候Gradle的缓存会导致依赖解析异常,执行以下步骤:
- 点击Android Studio菜单栏的
Build -> Clean Project - 然后点击
Build -> Rebuild Project
内容的提问来源于stack exchange,提问作者user1148358
相关产品推荐
相关产品推荐

