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.jar 和 jetified-fontbox-2.0.27.jar

  3. jetified-fontbox-2.0.27.jar 是 jetified-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'
    }
}
相关推荐
eggwyw10 分钟前
关于C++为什么不加入垃圾回收机制解析
开发语言·c++
独泪了无痕9 小时前
探索Pinyin4j-Java中的拼音转换利器
java·后端
道尔柯南10 小时前
C++ string 类详解:从常用接口到深拷贝,彻底掌握字符串处理
android·java·c++
来让爷抱一个11 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
唐诺11 小时前
5、Android JNI 动态注册中的“签名“详解
android·jni
kingx311 小时前
Bugku 3122 谷歌小恐龙题解:纯离线逆向 Vault 的 AES-GCM 加密资源(附 Python 解密器)
java·逆向·ctf·bugku·aes-gcm
DevOpenClub13 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
心祭丫丫14 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
露天赏雪14 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
zhaoshuzhaoshu14 小时前
Android 系统启动与调试中的日志抓取方式全解析
android