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'
    }
}
相关推荐
月华路6 分钟前
G1 垃圾回收:脏卡队列、记忆集与并发精化线程机制
java·开发语言
gugucoding36 分钟前
47. 【Java】Java内存模型(JMM)与可见性
java·开发语言
m0_3807438741 分钟前
从零调用 Claude 教程
开发语言·python·node.js
起床学FPGA1 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript
zww89491111 小时前
校园跑腿系统开发实战指南:从需求分析到上线部署全流程解析
java
Fluxart.ai2 小时前
电商商品图审核怎么自动化?规则引擎、人工复核与发布门禁
java·前端·自动化
愚公搬代码2 小时前
【愚公系列】《Android应用案例开发大全》016-LBS类应用掌上杭州(辅助工具类的开发)
android·前端
x_x-F2 小时前
网络数据从网卡到用户态:一场基于内存所有权转移的接力赛
开发语言·网络·php
名字还没想好☜2 小时前
Java 线上内存泄漏排查实战:jmap 导堆、MAT 找 GC Roots 与四类常见泄漏
java·开发语言·jvm·内存泄漏
码匠许师傅2 小时前
【C++ 面试真题】聊聊 C++ 的多继承与虚继承
开发语言·c++·面试