Gradle重构后出现transformClassesWithMultidexlistForDebug构建错误求助
嘿,我之前帮不少开发者搞定过这类Multidex打包冲突的问题,你的错误核心是重复的类文件打断了multidexlist的生成流程——虽然已经配置了Multidex,但重复的zip条目会让打包工具卡壳。下面是几个针对性的排查和解决步骤:
1. 先揪出重复的依赖
首先执行Gradle命令查看完整的依赖树,定位到底是哪个模块或者第三方库重复引入了support-design:
./gradlew app:dependencies
在输出里搜com.android.support:design,你大概率会发现不同地方引入了不同版本的design库,或者同一个库被多次引用。
2. 统一依赖版本并排除重复
在你的build.gradle (Module: app)里,先把所有support库的版本统一,然后排除第三方库自带的重复依赖:
// 先定义统一的版本号,方便维护 ext { supportLibVersion = '28.0.0' // 换成你项目实际用的稳定版本 } dependencies { // 只保留这一处design依赖 implementation "com.android.support:design:${supportLibVersion}" // 对每个第三方库,排除它自带的design依赖,举个例子: implementation('com.example:some-third-party-lib:1.0.0') { exclude group: 'com.android.support', module: 'design' } }
如果是多模块项目,记得所有模块都要使用同一个版本的support库,别让跨模块的版本不一致搞事情。
3. 彻底清理缓存再构建
Android Studio自带的Clean + Rebuild有时候不够彻底,试试用Gradle命令清空缓存并刷新依赖:
./gradlew clean ./gradlew build --refresh-dependencies
这会把Gradle缓存里残留的旧依赖文件全清掉,重新拉取最新的依赖。
4. 检查Desugar的问题
你的错误里提到了desugar转换,可能是Desugar处理重复类时出了bug。如果你的项目不是必须用Desugar,可以暂时关掉它试试,在build.gradle (Module: app)的android块里加:
android { compileOptions { coreLibraryDesugaringEnabled false } }
如果必须用Desugar,那就把Gradle插件升级到最新的稳定版,很多这类bug在新版本里已经被修复了。
额外提醒:别同时用本地jar和Gradle依赖
如果你的项目里手动加过support-design.jar这类本地jar包,同时又通过Gradle引入了design库,那肯定会重复。删掉本地的jar包,只保留Gradle依赖就行。
内容的提问来源于stack exchange,提问作者Lucas Franco

