求助:运行App时遭遇transformDexArchiveWithExternalLibsDexMergerForDebug错误
求助:Android Dex合并失败问题
我在运行App的时候遇到了这个烦人的错误:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'。java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex error
我已经试过清理并重建项目、统一所有库版本这些常规操作了,但还是没能解决问题,有没有大佬能给点新的建议?
我的app模块build.gradle相关内容如下:
android { // 这里是我的android配置内容 compileSdkVersion 30 defaultConfig { applicationId "com.myapp.package" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } // 其他配置项... } dependencies { implementation 'androidx.appcompat:appcompat:1.3.0' implementation 'com.google.android.material:material:1.4.0' // 其他依赖库... }
针对这个问题的可行解决方案
我整理了几个可能有效的方向,你可以逐一尝试:
- 排查重复依赖:在终端运行
./gradlew app:dependencies(Windows系统用gradlew.bat app:dependencies)生成依赖树,仔细查找有没有重复引入的库(比如同一个库的不同版本,或者被多个依赖间接引入的重复包),找到后在对应的依赖里用exclude group: 'xxx', module: 'xxx'排除重复部分。 - 确保MultiDex配置正确:如果你的项目方法数超过65536,或者minSdkVersion低于21,一定要开启MultiDex:
- 在app模块的defaultConfig里添加
multiDexEnabled true; - 依赖对应的MultiDex库:AndroidX项目用
implementation 'androidx.multidex:multidex:2.0.1',旧support库项目用implementation 'com.android.support:multidex:1.0.3'; - 自定义Application类继承
MultiDexApplication,或者在现有Application的attachBaseContext方法里调用MultiDex.install(this)。
- 在app模块的defaultConfig里添加
- 彻底清理Gradle缓存:有时候缓存会导致奇怪的问题,你可以删除项目根目录下的
.gradle文件夹,以及用户目录(比如Windows的C:\Users\你的用户名\.gradle,Mac的~/.gradle)里的缓存,然后重新同步项目。 - 检查AndroidX与旧support库冲突:如果项目里同时存在AndroidX和旧的support库,很容易出现这类问题。可以用Android Studio的
Refactor -> Migrate to AndroidX工具自动完成转换,确保所有依赖都统一用AndroidX版本。 - 更新Gradle相关版本:尝试把项目的Gradle插件版本(在项目根目录build.gradle的
dependencies块里的com.android.tools.build:gradle)和Gradle wrapper版本(gradle/wrapper/gradle-wrapper.properties里的distributionUrl)更新到稳定的最新版本,比如插件用7.0.0以上,Gradle用7.0以上版本,新版本通常会修复很多已知的Dex合并问题。
内容的提问来源于stack exchange,提问作者Ghulam Ali
相关产品推荐
相关产品推荐

