Android 在构建过程中,发现有两个依赖库都包含了相同路径的资源文件

  • 在 Android 开发中,构建项目时,出现如下错误信息

    Execution failed for task ':app:mergeDebugJavaResource'.

    A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
    2 files found with path 'META-INF/DEPENDENCIES' from inputs:
    - D:\Gradle\caches\transforms-3\c13541bae7b590bbb30dd4b2fef497d0\transformed\jetified-pdfbox-2.0.27.jar
    - D:\Gradle\caches\transforms-3\02007676df71727c0ea188624ff7de13\transformed\jetified-fontbox-2.0.27.jar
    Adding a packagingOptions block may help, please refer to
    https://developer.android.com/reference/tools/gradle-api/7.2/com/android/build/api/dsl/ResourcesPackagingOptions
    for more information

问题原因
  1. Android 在构建过程中,发现有两个依赖库都包含了相同路径的资源文件

  2. META-INF/DEPENDENCIES 文件分别来自 jetified-pdfbox-2.0.27.jarjetified-fontbox-2.0.27.jar

  3. jetified-fontbox-2.0.27.jarjetified-pdfbox-2.0.27.jar 的子模块,它们都打包了自己的 META-INF/DEPENDENCIES 文件

处理策略
  1. 在主模块的 build.gradle 中添加如下内容,处理冲突的文件,其中,pickFirst 表示如果多个依赖包含同名文件,就选择第一个遇到的
groovy 复制代码
android {

    ...

    packagingOptions {
        pickFirst 'META-INF/DEPENDENCIES'
    }
}
  1. 或者,如果不需要这些元信息文件,使用 exclude 直接丢弃该文件
groovy 复制代码
android {

    ...

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
    }
}
相关推荐
热心网友俣先生14 小时前
2026国赛C题:五年命题规律与预测
java·c语言·前端·数学建模
见叶之秋14 小时前
【C++】String类的使用(含模拟实现)
java·开发语言·c++
想吃火锅100514 小时前
【leetcode】42.接雨水js
开发语言·javascript·ecmascript
竹叶青_七弦14 小时前
从复制粘贴到Harness:Java后端AI编程的工程化之路
java
wuminyu14 小时前
Linux内核线程调度与虚拟线程调度机制系统级深度剖析
java·linux·c语言·jvm·c++
你的坚定15 小时前
SurfaceFlinger合成一帧的完整流程
android
小溪学编程15 小时前
Java InputStream 详解:从基础到实战
java·python·php
血小板要健康15 小时前
队列 + 宽搜(BFS):二叉树层序遍历 算法总结
java·数据结构·笔记·算法·leetcode·宽度优先
雪芽蓝域zzs15 小时前
第十六节:递归组件实现无限层级折叠侧边栏菜单
开发语言·javascript·ecmascript
A黄俊辉A15 小时前
【无标题】
java