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'
    }
}
相关推荐
小羊没烦恼!5 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里5 天前
java中的继承和多态的区别
java
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕5 天前
JSONObject与JSONArray封装数据格式区别
java·json
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
胡写代码5 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖5 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
此时不提桶,更待何时5 天前
01-06-A-JVM排查实战详解
java·jvm