android – Gradle构建时在APK META-INF中复制的重复文件

我一直在寻找 some of the answers这里发布的关于这个错误,但没有运气.我希望得到一些关于发生了什么的澄清.我的错误如下:

Error:Execution failed for task ‘:app:transformResourcesWithMergeJavaResForDebug’.
com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/commons-io/commons-io/pom.xml
File1: /home/colin/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-io/1.3.2/b6dde38349ba9bb5e6ea6320531eae969985dae5/commons-io-1.3.2.jar
File2: /home/colin/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/1.3.2/b6dde38349ba9bb5e6ea6320531eae969985dae5/commons-io-1.3.2.jar

我弄完了

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/ASL2.0'
}

在应用程序中> build.gradle文件,但问题仍然存在.是否有其他地方我应该放这个,或者只是删除一些文件?或者我可能已经排除了太多文件 – 我是否应该省略其中的一些行,如果是这样的话?我也尝试将依赖项移到顶部,在Android之上无济于事.

此外,我对这些帖子中给出的一些建议感到有些困惑. Exclude和PickFirst之间的操作区别是什么?它们似乎是可以互换的,但表达了截然不同的想法.在上传到应用程序商店时,似乎我需要包含许可证,所以如果我将其排除在这里以便让应用程序进行编译,那么在我准备上传时,我将在哪里包含它?我希望有人能够更多地了解这里发生的事情.

解决方法

我必须在packagingOptions {}中添加以下行
exclude 'META-INF/maven/commons-io/commons-io/pom.xml'
exclude 'META-INF/maven/commons-io/commons-io/pom.properties'

我的问题非常愚蠢;当包括排除’META-INF / maven / commons-io / commons-io / pom.xml’时,我得到的错误看起来与第一个非常相似,但实际上是不同的.添加排除’META-INF / maven / commons-io / commons-io / pom.properties’终于让一切正常.仍然不确定为什么我必须采取这些步骤.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...