Gradle插件v0.13.1后重复的Zip条目

时间:2014-09-26 12:41:25

标签: android gradle android-studio proguard

我一直在使用Gradle Android插件v0.12,但我决定升级到新版本,因为我需要新功能(并且改进的速度总是加分)。

更新到新的v0.13.1后,我不断获得"重复的Zip条目" (来自Proguard)虽然一切顺利。完整错误:

  

java.io.IOException:无法写[/Users/.../classes-proguard/netherlands/release/classes.jar](无法阅读[/Users/.../ .gradle /缓存/模块-2 /文件-2.1 / org.apache.commons /公地IO / 1.3.2 / b6dde38349ba9bb5e6ea6320531eae969985dae5 /公地IO-1.3.2.jar(;;;;;;!META-INF / MANIFEST.MF)](重复的zip条目[commons-io-1.3.2.jar:org / apache / commons / io / CopyUtils.class]))(之前的CopyUtils是FileUtils)。

我使用以下包装选项:packagingOptions

{ 
   exclude 'AndroidManifest.xml' 
   exclude 'META-INF/DEPENDENCIES' 
   exclude 'META-INF/notice.txt' 
   exclude 'META-INF/license.txt' 
   exclude 'META-INF/LICENSE.txt' 
   exclude 'META-INF/NOTICE.txt' 
   exclude 'META-INF/MANIFEST.MF' 
   exclude '!META-INF/MANIFEST.MF' 
   exclude 'META-INF/services/javax.annotation.processing.Processor' 
}

正如您所知,我排除了清单文件......

为了测试它,我改回了版本0.12.0并且一切都再次工作,回到0.13。*并且它中断了(但我需要0.13。*)!

此外,我使用以下库:

  1. Robospice
  2. 改造
  3. OkHttp
  4. 达特
  5. ICEPICK
  6. Butterknife
  7. Crouton
  8. SmoothProgressBar
  9. NineoldsAndroid(在BetterPickers库中)
  10. 有没有人遇到这个问题?如果是这样,任何人都可以帮助我(现在已经在这个问题上打了两天头脑!)?谢谢!

4 个答案:

答案 0 :(得分:15)

更新到Android Gradle插件0.13时遇到了同样的问题。我设法通过在我的retrofit文件中包含build.gradle来修复它:

compile('com.squareup.retrofit:retrofit:1.6.1') {
    exclude group: 'commons-io', module: 'commons-io'
}

修改并且可以同时对所有retrofitrobospice个依赖项执行此操作:

compile('com.octo.android.robospice:robospice-retrofit:1.4.14') {
    exclude group: 'commons-io', module: 'commons-io'
}

它将自动获取所有底层依赖项(retrofitrobospice-corerobospice-cache,...)。

答案 1 :(得分:15)

我有同样的问题。在我的情况下,我没有做几个月的构建,并发现依赖compile 'org.apache.commons:commons-io:1.3.2'不再有效(虽然我猜这些罐子仍在我的本地存储库中)。

一旦我将其更改为compile 'commons-io:commons-io:1.3.2',proGuard运行正常。

答案 2 :(得分:1)

通过使用CjS答案,我能够解决这个问题。即使是Gaetan答案也有效。

添加到此 如果你的compileSdkVersion是19(在我的情况下)

,我通过使用这个解决了问题
$scope.$on("calendarValue", function(e, data) {
    console.log(data.foo === "bar");
    $scope.selectedValue = data.value;
});

否则,如果您的compileSdkVersion为23 然后使用

compile ('org.apache.httpcomponents:httpmime:4.3'){
    exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
compile ('org.apache.httpcomponents:httpcore:4.4.1'){
    exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
compile 'commons-io:commons-io:1.3.2'

答案 3 :(得分:-4)

问题出在您正在使用的库中。

添加gradle文件:

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/MANIFEST.MF'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}