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

Cst*_*le5 7 android gradle

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

错误:任务':app:transformResourcesWithMergeJavaResForDebug'的执行失败.com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:在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'
}
Run Code Online (Sandbox Code Playgroud)

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

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

Cst*_*le5 13

我不得不添加以下行 packagingOptions {}

exclude 'META-INF/maven/commons-io/commons-io/pom.xml'
exclude 'META-INF/maven/commons-io/commons-io/pom.properties'
Run Code Online (Sandbox Code Playgroud)

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