2014-09-26 31 views
13

我一直在使用Gradle Android插件v0.12,但是我決定升級到新版本,因爲我需要新的功能(並且改進的速度總是一個加號) 。Gradle Plugin v0.13.1之後的重複Zip條目

更新到新的v0.13.1之後,我一直在收到「重​​復郵編條目」(從Proguard),而一切工作之前。完整的錯誤:

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).

我用以下封裝選項: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. 釤oothProgressBar
  9. NineoldsAndroid(在BetterPickers庫)

有沒有人遇到這個問題呢?如果是這樣,任何人都可以幫助我(在這個問題上已經打破了我的頭2天!)?謝謝!

+0

看起來像你不是唯一一個:https://github.com/stephanenicolas/robospice/issues/365 – rciovati 2014-09-26 15:15:29

+0

如果你刪除主目錄中的.gradle文件夾並重建,它是否工作?如果你清理你的項目並重建? – 2014-09-26 19:25:57

+0

我嘗試刪除Gradle緩存,.gradle文件夾,... 沒有任何工作,Gaëten的答案然而! 似乎是構建工具中的錯誤! – Superplastik 2014-09-29 06:28:59

回答

16

我更新到Android搖籃插件0.13時有同樣的問題。我設法通過包括retrofit這樣在我build.gradle文件進行修復:

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

編輯:,可以一次用做所有retrofitrobospice dependcies:

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

它會得到所有潛在的依賴項自動生成(retrofit,robospice-corerobospice-cache,...)。

+1

部分解決了!儘管我會給你答案。 真正的解決方案是將排除組應用於:改造和所有robospice部件(robospice core,緩存和改進插件)。 非常感謝!我擁有你一杯咖啡! – Superplastik 2014-09-27 17:09:26

+0

謝謝你的咖啡:p你可以用一個依賴來做到這一點。請參閱我的答案中的第二部分。 – 2014-09-29 05:34:14

+0

我仍然必須定義所有'排除組'或gradle拒絕工作! – Superplastik 2014-09-29 06:42:16

-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' 
    } 
} 
+0

閱讀我的文章,這些已經添加! – Superplastik 2014-09-27 17:10:53

+0

這並不能解決問題。 – drc 2014-11-05 00:29:39

15

我有同樣的問題。在我的情況下,我幾個月沒有進行構建,並發現依賴關係compile 'org.apache.commons:commons-io:1.3.2'不再有效(儘管我猜這些jar仍在我的本地存儲庫中)。

一旦我將它更改爲compile 'commons-io:commons-io:1.3.2',proGuard運行良好。

+0

這是唯一適用於我的修復程序。 Gaetlan's沒有解決這個問題。 – drc 2014-11-05 17:19:53

+0

同樣的情況,相同的修復。不明白。 – 2014-12-21 20:16:23

+0

來源:[此神器被移動](https://mvnrepository.com/artifact/org.apache.commons/commons-io)。感謝您指點我正確的方向!原來也有一個新版本,在寫這篇文章的時候,它是在2.5 – yuval 2016-12-30 01:50:16

1

通過使用CjS答案我能夠解決這個問題。即使Gaetan答案也是有效的。

添加到這個 我解決了這個問題通過使用此,如果您compileSdkVersion是19(對我來說)

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' 

否則,如果您compileSdkVersion是23 然後用

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' 
    } 
} 
相關問題