Gradle将重复文件放入apk文件中

时间:2014-02-04 08:31:45

标签: android eclipse jar gradle

我正在使用gradle 1.10,android插件的版本是0.8.0。我的android项目需要这两个罐子: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本身的错误吗?可以排除上述文件导致任何问题吗?我只是排除上面提到的罐子,或者那些META-INF文件还有什么?我不想排除项目需要的任何内容

2 个答案:

答案 0 :(得分:0)

以下是杰克逊队https://github.com/FasterXML/jackson-databind/issues/214

的一些信息

在SO上有关于此的各种帖子,例如:Error generating final archive: Found duplicate file for APK: LICENSE.txt

我已经将Jackson与Eclipse和Ant一起使用(我目前在Studio中使用它与您使用的相同解决方法),并且我必须在命令上使用zip来重命名license.txt文件。在这篇文章Android Gradle plugin 0.7.0: "duplicate files during packaging of APK"中有关于整个事情的更多信息(包括使用zip重命名文件的示例)。

我没有发现任何迹象表明重命名或排除这些文件会产生负面影响,而且在使用Jackson和Eclipse和Ant的大约2年内我从未遇到过任何问题。

答案 1 :(得分:0)

首先,这不是gradle的错误。 它出现在MergeJavaResourcesTransform任务中: enter image description here

enter image description here

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

META-INFO文件没有合并规则,所以我们只能在文件中添加哪些名称NOTICE等

enter image description here