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

Android Gradle构建报重复类、重复META-INF文件异常排查

Android Gradle 依赖冲突修复方案(Firebase 场景)

问题根因

两个报错属于独立的构建故障,和手动注释业务依赖的操作无关:

  • 重复类com.google.api.Advice冲突:属于传递依赖版本不兼容,proto-google-common-protos是其他业务组件间接拉取的依赖,和Firebase SDK自带的protolite-well-known-types包含了同名类,手动注释显性声明的依赖无法触达传递依赖层,因此无法解决问题。
  • META-INF/INDEX.LIST重复冲突:多个引入的Java依赖包自带同名元数据文件,构建阶段合并Java资源时默认不做自动去重,属于Android打包常见的资源冲突问题。

修复操作

1. 修复proto类重复冲突

打开app模块的build.gradle文件,在android配置块下添加全局依赖排除规则,剔除冲突的传递依赖:

android {
    // 保留原有compileSdk、defaultConfig、buildTypes等所有配置
    configurations.all {
        // 排除和Firebase proto库冲突的依赖
        exclude group: 'com.google.api.grpc', module: 'proto-google-common-protos'
    }
}

如果排除依赖后出现Firebase组件版本不匹配报错,在dependencies块最顶部引入Firebase BOM统一管控所有Firebase组件版本,不要单独给每个Firebase依赖指定零散版本号:

dependencies {
    // Firebase BOM 放在所有Firebase依赖之前
    implementation platform('com.google.firebase:firebase-bom:32.7.0')
    // 后续Firebase相关依赖不需要写版本,由BOM自动匹配兼容版本
    implementation 'com.google.firebase:firebase-storage'
    implementation 'com.google.firebase:firebase-firestore'
    // 其余业务依赖保持原有配置不变
}

2. 修复META-INF资源合并冲突

同app模块build.gradle的android块内,添加打包配置处理重复元数据文件:

android {
    // 保留原有配置
    packagingOptions {
        // 遇到重复的INDEX.LIST时取第一个包内的文件,不中断构建
        pickFirst 'META-INF/INDEX.LIST'
        // 后续如果碰到其他META-INF路径下的重复文件报错(比如LICENSE、NOTICE、DEPENDENCIES),按相同格式添加规则即可
    }
}

3. 清理缓存重新构建

配置修改完成后,不要直接点运行,先执行清理操作:

  • 命令行方式:在项目根目录执行./gradlew clean,清理完成后再执行./gradlew assembleDebug验证构建
  • Android Studio可视化方式:点击顶部菜单栏Build > Clean Project,等待清理完成后再正常运行项目即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:01:22