2014-09-26 3 views
13

Я использую плагин Android Gradle v0.12, но я решил перейти на новую версию, потому что мне нужна была новая функциональность (и улучшенная скорость всегда плюс) ,Duplicate Zip Entry после Gradle Plugin v0.13.1

После обновления до версии v0.13.1 я продолжаю получать «Duplicate Zip Entry» (из 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. Dart
  5. щипцы для льда
  6. нож для масла
  7. Crouton
  8. Sm oothProgressBar
  9. NineoldsAndroid (в библиотеке BetterPickers)

ли кто-либо столкнулись с такой проблемой тоже? Если да, может кто-нибудь, пожалуйста, помогите мне (ломаю голову на 2 дня по этому вопросу сейчас!)? Благодаря!

+0

Похоже вы не единственный: https://github.com/stephanenicolas/robospice/issues/365 – rciovati

+0

Работает ли он, если вы удаляете папку .gradle в своем домашнем каталоге и перестраиваете? Как насчет того, очищаете ли вы проект и перестраиваете? –

+0

Я попытался удалить кегель Gradle, папку .gradle, ... Ничего не получилось, однако ответ Гаэтен сделал! Кажется, ошибка в инструментах сборки! – Superplastik

ответ

16

Я была такая же проблема при обновлении Android Gradle плагин 0,13. Мне удалось это исправить, в том числе retrofit этот путь в моем build.gradle файле:

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

Edit: А может это сделать на всех retrofit и robospice dependcies сразу с:

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

Он получит все базовые зависимости автоматически (retrofit, robospice-core, robospice-cache, ...).

+1

Частично решил! Однако я дам вам ответ. Реальное решение заключалось в том, чтобы применить группу исключений на: дооснащение и все части роботизана (ядро robospice, кеш и модифицированный плагин). Большое спасибо! У меня есть кофе! – Superplastik

+0

Спасибо за кофе: p Вы можете сделать это только с одной функцией dependecy. См. Вторую часть моего ответа. –

+0

Мне все еще приходилось определять все «группы исключений», или град отказался работать! – Superplastik

-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

+0

Это не решит проблему. – drc

15

У меня была та же проблема. В моем случае я не делал сборки в течение нескольких месяцев и обнаружил, что зависимость compile 'org.apache.commons:commons-io:1.3.2' больше не действительна (хотя я думаю, что банки все еще были в моем локальном репозитории).

Как только я сменил его на compile 'commons-io:commons-io:1.3.2', proGuard прошел отлично.

+0

Это единственное исправление, которое сработало для меня. Галетлан не разрешил проблему. – drc

+0

Такая же ситуация, исправление. Не понимать. –

+0

Источник: [Этот артефакт перемещен] (https://mvnrepository.com/artifact/org.apache.commons/commons-io). Спасибо, что указал мне в правильном направлении! Оказывается, есть также новая версия, так как в этом письме lib находится на 2.5 – yuval

1

Используя ответ CjS, я смог решить эту проблему. Даже ответ Гаэтана также работает.

Добавление к этому Я решил проблему с помощью этой, если ваш 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' 
    } 
} 
Смежные вопросы