Android运行时Dex处理失败报错求助:编译正常但运行出错
解决Android Run时DexArchiveBuilderException错误的方案
你遇到的这个问题很典型——Build/Clean都正常,唯独Run时触发dex编译失败,大概率是Instant Run的缓存或配置冲突导致的。下面是几个经过社区验证的解决办法,按顺序尝试:
1. 先禁用Instant Run试试
Instant Run的热替换逻辑有时候会和项目的dex处理流程打架,尤其是多模块或有自定义transform的项目:
- 打开Android Studio的
File > Settings > Build, Execution, Deployment > Instant Run - 取消勾选
Enable Instant Run to hot swap code/resource changes on deploy - 重启Android Studio,再重新Run项目
2. 清理Instant Run缓存
如果不想直接禁用,先清理它的缓存文件:
- 关闭Android Studio
- 找到对应路径删除Instant Run缓存:
- macOS:
~/Library/Android/sdk/build-tools/<你的build-tools版本号>/instant-run - Windows:
C:\Users\<你的用户名>\AppData\Local\Android\Sdk\build-tools\<你的build-tools版本号>\instant-run
- macOS:
- 同时删掉项目根目录的
.idea、build文件夹,以及各模块下的build文件夹 - 重新打开项目,执行
Build > Clean Project后再Run
3. 检查MultiDex配置
如果你的项目minSdkVersion低于21,必须确保MultiDex配置正确:
- 在Module级
build.gradle里开启MultiDex:android { defaultConfig { multiDexEnabled true } } dependencies { // 用AndroidX的话换成androidx.multidex:multidex:2.0.1 implementation 'com.android.support:multidex:1.0.3' }
4. 确认Java版本兼容性
Java版本不匹配也可能引发dex编译错误:
- 在Module级
build.gradle里指定Java版本:android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } - 同时确保Project级
build.gradle里的gradle插件版本和你的Android Studio版本匹配
5. 排查第三方依赖冲突
有些第三方库可能包含重复的class文件,或者和项目代码冲突:
- 执行命令查看依赖树:macOS/Linux用
./gradlew app:dependencies,Windows用gradlew app:dependencies - 找到重复的依赖,用
exclude group: 'xxx', module: 'xxx'排除冗余模块
如果以上方法都没解决,试试更新Android Studio到最新稳定版,或者重新同步项目(File > Sync Project with Gradle Files)。
内容的提问来源于stack exchange,提问作者William King
相关产品推荐
相关产品推荐

