Android Proguard警告:无法写入资源(重复的zip条目)

时间:2015-06-02 17:21:17

标签: android android-proguard

我启用了proguard并得到了:

Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-io-2.4.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-io-2.4.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-collections-3.2.1.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-collections-3.2.1.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [joda-time-2.7-no-tzdb.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [joda-time-2.7-no-tzdb.jar:META-INF/NOTICE.txt])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-primitives-1.0.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/services/javax.annotation.processing.Processor] (Duplicate zip entry [icepick-processor-2.3.6.jar:META-INF/services/javax.annotation.processing.Processor])
Warning:can't write resource [.readme] (Duplicate zip entry [classes.jar:.readme])
Warning:can't write resource [META-INF/LICENSE.txt] (Duplicate zip entry [commons-lang-2.6.jar:META-INF/LICENSE.txt])
Warning:can't write resource [META-INF/NOTICE.txt] (Duplicate zip entry [commons-lang-2.6.jar:META-INF/NOTICE.txt])

这是什么意思? 我应该排除像这里的东西吗?

configurations {
    all*.exclude group: 'commons-logging', module: 'commons-logging'
}

3 个答案:

答案 0 :(得分:30)

您正在使用包含重复文件的库,这是gradle中的错误,解决在项目build.gradle中使用它的问题

android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude '.readme'
    }
}

答案 1 :(得分:1)

来自Proguard manual

  

警告:无法写入资源...重复的zip条目

     

您的输入jar包含多个具有相同名称的资源文件。   ProGuard继续像往常一样复制资源文件,跳过任何文件   以前使用过的名称的文件。再一次,警告可能是一个   虽然有一些问题的指示,所以建议删除   重复。一种方便的方法是在上面指定过滤器   输入罐子。没有选项可以关闭这些警告。

     

标准的Android构建过程会自动为您指定输入jar。可能没有一种简单的方法可以过滤它们以进行删除   这些警告。您可以手动删除重复的资源文件   来自输入和库。

答案 2 :(得分:0)

在proguard配置文件中添加选项-ignorewarnings对我有用。它仍会对'META-INF / LICENSE.txt'发出警告,但构建不会失败。但只有在确定其效果时才使用此选项。关注http://proguard.sourceforge.net/manual/usage.html#ignorewarnings以获取更多信息。