You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建Release版本时出现Compose Material3类重复定义错误

解决Release构建时Material3类重复定义的问题

错误核心是ScrollableTabData/TabSlot等Material3类同时存在于官方依赖jar和本地构建的插桩类目录中,以下是针对性解决步骤:

1. 排查本地重复类与依赖冲突

  • 全局搜索项目代码,确认是否手动复制过Material3的源码类(如ScrollableTabData)到本地目录,若有则删除这些自定义类。
  • 执行依赖树命令查看重复依赖:
    ./gradlew 你的模块名:dependencies
    
    查找是否有多个模块重复引入androidx.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:01:19