Duplicate Zip Entry after Gradle Plugin v0.13.1

10,622

Solution 1

I had the same issue when updating to Android Gradle plugin 0.13. I managed to fix it by including retrofit this way in my build.gradle file:

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

Edit: And can do this on all retrofit and robospice dependcies at once with:

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

It will get all underlying dependencies automatically (retrofit, robospice-core, robospice-cache, ...).

Solution 2

I had the same issue. In my case I hadn't done a build for a few months, and found that the dependency compile 'org.apache.commons:commons-io:1.3.2' is no longer valid (though I guess the jars were still in my local repository).

Once I changed it to compile 'commons-io:commons-io:1.3.2', proGuard ran fine.

Solution 3

By Using CjS answer I was able to solve this. Even Gaetan Answer is also works.

Adding to this I solved the Issue by Using This, if your compileSdkVersion is 19(IN MY CASE)

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'

else if your compileSdkVersion is 23 then use

android {
useLibrary 'org.apache.http.legacy'
packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    }
}
Share:
10,622
Superplastik
Author by

Superplastik

Updated on June 17, 2022

Comments

  • Superplastik
    Superplastik almost 2 years

    I've been using the Gradle Android plugin v0.12 but I decided to upgrade to the new version, because I needed the new functionality (and the improved speed is always a plus).

    After updating to the new v0.13.1, I keep getting the "Duplicate Zip Entry" (from Proguard) while everything worked before. The full error:

    java.io.IOException: Can't write [/Users/.../classes-proguard/netherlands/release/classes.jar] (Can't read [/Users/.../.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-io/1.3.2/b6dde38349ba9bb5e6ea6320531eae969985dae5/commons-io-1.3.2.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [commons-io-1.3.2.jar:org/apache/commons/io/CopyUtils.class])) (CopyUtils was FileUtils before).

    I'm using following packaging options: 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' 
    }
    

    As you can tell, I'm excluding the manifest files...

    Just to test it, I changed back to version 0.12.0 and everything works again, back to 0.13.* and it breaks (but I need 0.13.*)!

    Further, I'm using the following libraries:

    1. Robospice
    2. Retrofit
    3. OkHttp
    4. Dart
    5. Icepick
    6. Butterknife
    7. Crouton
    8. SmoothProgressBar
    9. NineoldsAndroid (in library of BetterPickers)

    Did anyone encounter this issue too? If so, can anyone please help me out (been breaking my head for 2 days on this issue now!)? Thanks!

  • Superplastik
    Superplastik over 9 years
    Partly solved it! I'll give you the answer though. Real solution was to apply the exclude group on: retrofit AND all robospice parts (robospice core, cache and retrofit plugin). Thank you very much! I own you a coffee!
  • Gaëtan
    Gaëtan over 9 years
    Thanks for the coffee :p You can do this with only one dependecy. See the second part in my answer.
  • Superplastik
    Superplastik over 9 years
    I still had to define all 'exclude groups' or gradle refused to work!
  • Maciej Pigulski
    Maciej Pigulski over 9 years
    This works, indeed, but I think the root cause is a bug in the build system. With a proper fix in Gradle plugin for Android those workarounds shouldn't be necessary, this should just work. Problem is I had a problem reproducing this on a mock project, so it is hard to push a ticket to Googles Gradle Android plugin team.
  • drc
    drc over 9 years
    This is the only fix that worked for me. Gaetlan's didn't resolve the issue.
  • Jacob Tabak
    Jacob Tabak over 9 years
    Same situation, same fix. Do not understand.
  • yuval
    yuval over 7 years
    Source: This artifact was moved. Thanks for pointing me in the right direction! Turns out there is also a new version, as of this writing the lib is on 2.5
  • S bruce
    S bruce about 7 years
    @ CJS, please how did you "change it " to compile 'commons-io:commons-io:1.3.2' ?