构建Release版本时出现Compose Material3类重复定义错误
解决Release构建时Material3类重复定义的问题
错误核心是ScrollableTabData/TabSlot等Material3类同时存在于官方依赖jar和本地构建的插桩类目录中,以下是针对性解决步骤:
1. 排查本地重复类与依赖冲突
- 全局搜索项目代码,确认是否手动复制过Material3的源码类(如
ScrollableTabData)到本地目录,若有则删除这些自定义类。 - 执行依赖树命令查看重复依赖:
查找是否有多个模块重复引入./gradlew 你的模块名:dependenciesandroidx.compose.material3相关依赖,或间接依赖带来的版本冲突。
2. 清理构建缓存与插桩产物
- 执行清理命令:
./gradlew clean - 手动删除Gradle缓存目录(错误提示中的
C:\Users\user\.gradle\caches),以及模块下的build/intermediates/asm_instrumented_project_classes目录,再重新构建。 - 若项目使用了字节码插桩工具(如自定义ASM插件、LeakCanary等),暂时禁用该工具,验证是否是插桩过程生成了重复类。
3. 检查AGP与编译配置
- 确保Compose所需的Java版本配置正确:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } } - 暂时关闭资源压缩配置
shrinkResources = false,排除资源压缩带来的间接冲突。
4. 强制依赖版本统一或排除重复依赖
- 在模块的
build.gradle中强制统一Material3相关依赖版本:configurations.all { resolutionStrategy { force "androidx.compose.material3:material3:1.1.2" force "androidx.compose.material3:material3-runtime:1.1.2" } } - 若发现重复的runtime依赖,在主依赖中排除:
implementation("androidx.compose.material3:material3:1.1.2") { exclude group: "androidx.compose.material3", module: "material3-runtime" }
5. 匹配Compose编译器与Kotlin版本
Compose编译器版本必须与Kotlin版本严格对应,同时Material3版本需与二者兼容。例如:
- Kotlin 1.9.0 → Compose Compiler 1.5.3 → Material3 1.2.0
- 调整版本后重新构建,验证是否解决冲突。
内容的提问来源于stack exchange,提问作者Charlie Walker
相关产品推荐
相关产品推荐

