求助:构建应用时出现Multiple Dex files define Landroid/arch/lifecycle/LiveData$1错误
解决「Multiple dex files define Landroid/arch/lifecycle/LiveData$1」错误
兄弟,我太懂这个报错的糟心了!你碰到的这个Error:Execution failed for task ':app:transformClassesWithDexForDebug',核心原因就是重复引入了LiveData相关的类,编译的时候生成了多个一模一样的Landroid/arch/lifecycle/LiveData$1文件,Dex合并阶段就直接冲突报错了。下面给你几个靠谱的解决办法:
检查并统一Lifecycle依赖版本
先去你的app级build.gradle里看看,是不是同时引入了不同版本的Lifecycle库?比如一边用了AndroidX的androidx.lifecycle:lifecycle-livedata,另一边又通过第三方库间接依赖了旧版的android.arch.lifecycle:livedata?
你可以在终端执行这条命令查看完整的依赖树,找出所有和Lifecycle相关的依赖:./gradlew app:dependencies找到后把所有Lifecycle相关依赖的版本统一成同一个,比如都用AndroidX的最新稳定版:
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'如果是第三方库偷偷引入了旧版本,就用
exclude把重复的依赖排除掉:implementation('你的第三方库坐标') { exclude group: 'android.arch.lifecycle', module: 'livedata' }开启MultiDex(针对方法数超标的情况)
要是你的应用方法总数超过了64k的Dex限制,也可能触发这类冲突(不过更常见的还是重复依赖)。如果确认是方法数问题,按下面步骤开启MultiDex:- 先添加MultiDex的依赖:
implementation 'androidx.multidex:multidex:2.0.1'- 在build.gradle的
defaultConfig里开启开关:
android { defaultConfig { // 其他配置... multiDexEnabled true } }- 如果你的App有自定义Application类,让它继承
MultiDexApplication;要是没法改继承关系,就在attachBaseContext方法里调用MultiDex.install(this)。
清理缓存后重新编译
有时候项目缓存里的旧文件也会搞出这种乌龙,试试这几步:- 点击Android Studio顶部菜单的
Build > Clean Project - 接着执行
Build > Rebuild Project - 要是还不行,直接删掉项目根目录下的
.gradle文件夹和app/build文件夹,然后重新同步项目。
- 点击Android Studio顶部菜单的
内容的提问来源于stack exchange,提问作者Ishan Gupta
相关产品推荐
相关产品推荐

