-
在 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
问题原因
-
Android 在构建过程中,发现有两个依赖库都包含了相同路径的资源文件
-
META-INF/DEPENDENCIES文件分别来自jetified-pdfbox-2.0.27.jar和jetified-fontbox-2.0.27.jar -
jetified-fontbox-2.0.27.jar是jetified-pdfbox-2.0.27.jar的子模块,它们都打包了自己的META-INF/DEPENDENCIES文件
处理策略
- 在主模块的 build.gradle 中添加如下内容,处理冲突的文件,其中,pickFirst 表示如果多个依赖包含同名文件,就选择第一个遇到的
groovy
android {
...
packagingOptions {
pickFirst 'META-INF/DEPENDENCIES'
}
}
- 或者,如果不需要这些元信息文件,使用 exclude 直接丢弃该文件
groovy
android {
...
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
}