Gradle将重复的文件放在apk文件中

我使用的是gradle 1.10,android插件的版本是0.8.0。 我的android项目需要这两个jar子: jackson-core-asl-1.9.11.jarjackson-mapper-asl-1.9.11.jar 。 我添加这样的文件:

 dependencies { compile files('libs/jackson-core-asl-1.9.11.jar') compile files('libs/jackson-mapper-asl-1.9.11.jar') } 

在Gradle编译期间,我收到一条错误消息,说这两个文件在META-INF/ASL2.0是重复的。 我通过排除以下文件来解决问题:

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

我必须排除所有这些,因为显然它们都是重复文件。

我想知道为什么会出现这个问题。 这是Android插件或gradle本身的错误吗? 可以排除上述文件导致任何问题? 我只是排除了上面提到的jar子,还有那些META-INF文件中的其他东西吗? 我不想排除任何我的项目需要

Related of "Gradle将重复的文件放在apk文件中"

以下是jackson团队的一些信息https://github.com/FasterXML/jackson-databind/issues/214

SO上有很多关于这个的post,比如这个: 生成最终存档的错误:findAPK的重复文件:LICENSE.txt

我已经使用Eclipse和Eclipse的jackson(以及我目前在Studio中使用相同的解决方法,你正在使用它),我不得不使用zip命令来重命名license.txt文件。 关于整个事情的更多信息(包括使用zip来重命名文件的例子)在这篇文章Android Gradle插件0.7.0:“包装APK时重复的文件” 。

我还没有发现任何事情,表明重命名或排除这些文件将会产生负面影响,而且在使用Eclipse和Ant约2年的时间里,我从未遇到任何问题。

首先,这不是一个Gradle的错误。 它发生在MergeJavaResourcesTransform任务中: 在这里输入图像说明

在这里输入图像说明

正如我们所知,APK只是一个zip文件,所以当把META-INFO / xxx放入zip文件时,如果之前已经添加了文件,我们就不能再把它放进去。

META-INFO文件没有合并规则,所以我们只能添加名称为NOTICE的文件

在这里输入图像说明