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

向Java项目添加Kotlin SDK后出现attr/animationMode资源重复问题

解决方案:material-1.6.1中attr/animationMode重复定义导致构建失败及Snackbar报错问题

核心原因

问题源于依赖冲突:添加Kotlin SDK后,项目中可能通过间接依赖引入了多版本的Material Components库,不同版本库中attr/animationMode属性在DEFAULT配置下重复声明。直接修改库文件资源会破坏依赖完整性,进而引发Snackbar调用时的资源缺失错误。

可行解决步骤

1. 统一Material Components库版本

  • 在项目根目录的build.gradle(或build.gradle.kts)中定义全局统一版本:
    buildscript {
        ext {
            material_version = "1.6.1" // 也可升级至稳定高版本如1.9.0
        }
    }
    
  • 在app模块的build.gradle中,确保所有Material相关依赖使用该统一版本:
    dependencies {
        implementation "com.google.android.material:material:$material_version"
    }
    
  • 执行./gradlew app:dependencies查看依赖树,找到重复引入Material库的模块,用exclude排除冲突依赖:
    implementation("存在冲突的依赖") {
        exclude group: "com.google.android.material"
    }
    

2. 升级Material库到兼容版本

material-1.6.1存在已知资源冲突问题,建议升级到更稳定的版本(如1.9.0或最新稳定版),新版本修复了大量资源重复定义的bug,同时能保障Snackbar正常运行。

3. 临时资源覆盖方案(仅过渡使用)

若暂时无法升级版本,可在app模块的res/values/attrs.xml中重新声明属性,覆盖库中定义:

<declare-styleable name="MaterialComponents">
    <attr name="animationMode" format="enum">
        <enum name="none" value="0"/>
        <enum name="fade" value="1"/>
        <enum name="scale" value="2"/>
    </attr>
</declare-styleable>

注意:该方案仅作临时过渡,长期依赖统一版本管理更可靠。

4. 彻底清理并重构

完成上述操作后,执行以下命令清理缓存并重新构建:

./gradlew clean
./gradlew assembleDebug

功能验证

构建成功后,测试Snackbar调用代码确认功能正常:

Snackbar.make(view, "测试提示", Snackbar.LENGTH_SHORT).show();

内容的提问来源于stack exchange,提问作者Mahla Esmaeily

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:10:30