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

Gradle 8.5下Android构建报错:重复META-INF/NOTICE.md文件

解决Android Gradle 8.5构建时META-INF文件冲突问题

先修正配置语法错误

你当前的packaging块写法存在问题——在resources闭包内重复使用了resources.excludes前缀,这会导致配置不生效。以下是两种正确的配置方式:

方式1:Gradle 8+ 推荐的packaging块写法

android {
    // ...其他项目配置
    packaging {
        resources {
            pickFirsts += ['META-INF/LICENSE.txt']
            excludes += [
                'META-INF/NOTICE.md',
                'META-INF/LICENSE.md',
                'META-INF/INDEX.LIST',
                'META-INF/DEPENDENCIES',
                'META-INF/io.netty.versions.properties'
            ]
        }
    }
    // ...其他项目配置
}

方式2:兼容旧版本的packagingOptions写法(Gradle 8中已标记为废弃,但部分场景仍可生效)

android {
    // ...其他项目配置
    packagingOptions {
        pickFirst 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.md'
        exclude 'META-INF/LICENSE.md'
        exclude 'META-INF/INDEX.LIST'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/io.netty.versions.properties'
    }
    // ...其他项目配置
}

清理构建缓存并重新构建

配置修正后,执行以下命令彻底清理缓存并重新构建:

./gradlew clean build --refresh-dependencies

也可以手动删除项目根目录下的.gradle文件夹和模块内的build文件夹,再重新同步项目。

定位重复文件的来源依赖

如果上述步骤仍未解决问题,需要找出哪个依赖库引入了重复的META-INF/NOTICE.md:

  1. 执行命令导出依赖树:
./gradlew app:dependencies --configuration releaseRuntimeClasspath > dependencies.txt

(将app替换为你的模块名称)
2. 在生成的dependencies.txt文件中,搜索可能包含该文件的依赖(通常是netty、okhttp这类开源库)。
3. 找到冲突依赖后,可以通过exclude语法针对性排除该依赖下的重复文件,或者升级/替换该依赖版本。

检查项目本地资源

最后,确认项目自身的src/main/resources目录下是否手动添加过META-INF/NOTICE.md文件,如果有,直接删除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:35:01