java.util.zip.ZipException: повторюваний запис під час пакетуAllDebugClassesForMultiDex


118

Я не впевнений, що означає ця помилка.

Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class

Зараз я використовую android-support-v4.jarдля своїх бібліотек

dependencies {
    compile project(':addThisSDK')
    compile project(':centeredContentButton')
    compile project(':googleplayservices_lib')
    compile files('libs/adxtag2.4.6.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/aws-android-sdk-1.7.1.1-debug.jar')
    compile files('libs/commons-lang-2.6.jar')
    compile files('libs/crittercism_v4_4_0_sdkonly.jar')
    compile files('libs/dd-plist.jar')
    compile files('libs/FiksuAndroidSDK_4.1.1.jar')
    compile files('libs/iqengines-sdk-barcode.jar')
    compile files('libs/irEventTracker-1.2.jar')
    compile files('libs/jolt-core-0.0.7.jar')
    compile files('libs/json-utils-0.0.7.jar')
    compile files('libs/jsoup-1.7.2.jar')
    compile files('libs/kooaba-api-v4-java.jar')
    compile 'com.android.support:multidex:1.0.0'
}

Помилка не відображається під час синхронізації gradle. Тільки коли я намагаюся запустити додаток

У чому може бути проблема?


1
Помилка виникає, коли будь-яка інша ваша залежність від jar має той самий клас, переконайтеся, що ви не додали підтримку jar як gradele, так і залежність jar. будь ласка, включіть у питання повне закриття залежності.
pyus13

@ pyus13 спасибі. Я оновив питання. Це весь мій список залежностей
bman

1
У вашому проекті є 3 модульні залежності, тому переконайтесь, що лише одна з усіх має залежність від підтримки-v4.
pyus13

будь ласка, дивіться мою відповідь за адресою: stackoverflow.com/questions/28168063/…
Томер,

Помилка: Не вдалося виконати завдання ": Mulugu Astro: transformClassesWithJarMergingForDebug". > com.android.build.api.transform.TransformException: java.util.zip.ZipException: дублікат: android / support / v4 / view / ViewPager $ MyAccessibilityDelegate.class
Харша

Відповіді:


64

Вам потрібно перевірити, що ви вставили бібліотеку v4 та компілюєте бібліотеку? Ви не повинні повторювати бібліотеку у своєму додатку чи програмі залежності.

видаліть бібліотеку повторів, щоб залишився лише один V4.

у build.gradleфайл свого редактора програми додайте цю команду:

android{


    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
        all*.exclude group: 'com.android.support', module: 'support-annotations'
    }

}

це працює для мене! Можна спробувати!


19
Після додавання цих фрагментів не можу отримати підтримку v4, Будь-яка ідея?
Нісарг

@Nisarg теж трапляється зі мною.
CJ_COIMBRA

@Nisarg ви можете використовувати перекладати програму gradle.
GeekHades

@NisargCan, будь ласка, допоможіть мені, як перекомпілювати знову, я теж маю ту саму проблему, що і у вас, фрагменти та розробник завдань стакграунд перестали вирішувати
Gaurav Arora

82

Ви, мабуть, це вже виправили, але просто, щоб це не залишилося без відповіді. Спробуйте додати це до свого build.gradle:

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

4
Я додав лінію конфігурацій, але Error:Execution failed for task ':Analyst:packageAllDebugClassesForMultiDex'. > java.util.zip.ZipException: duplicate entry: com/android/vending/billing/IInAppBillingService$Stub$Proxy.classвона все ще показує.
biswajitGhosh

2
Як ви вирішили проблему?
Арслан Анвар

9
чи є якесь правильне рішення. Я отримую таку ж проблему java.util.zip.ZipException: дублікат: com / google / gson / annotations / Expose.class
RamBabu Pudari

2
Помилка: (5, 30) помилка: пакет android.support.v4.app не існує Отримання цієї помилки після додавання вашої відповіді
Ankit Thakkar

1
Куди це має піти, я новачок у gradle, і є 5 файлів build.gradle в моєму поточному проекті, жоден з них не має configurationsв них, і, мабуть, неважливо, де я його розміщую, я отримую помилки, як не можу символ дозволити "виключити" або не вдається розв'язати символ "усі"
JStephen

25

Я також натрапив на подібне питання під час повторного імпорту старого проекту затемнення. Виникла якась стара залежність як jar файл у проекті.

просто видаліть

компілювати fileTree (dir: 'libs', include: '* .jar')

у файлі gradle

і додати залежність у файл gradle.

Це працює для мене ..


Ця помилка виникла при імпорті старого проекту затемнення вибачте, насправді я видалив частину довідкової бібліотеки і додав ту саму залежність у файл gradle.
Paraneetharan Saravanaperumal

1
Для мене працював (також імпортував зі старої конфігурації затемнення). Після цього потрібно було очистити та відновити.
Пако Абато

17
Чому я повинен довіряти одному на ім’я Саурон?
matthias_b_nz

Зупинив цю специфічну помилку, але спричинив десятки інших. Іноді потрібні ці залежності. Як би дивно це не звучало, Саурон цього разу мав рацію.
SMBiggs

1
Додавши свої залежності явно по черзі, ви, ймовірно, розкриєте .jarбібліотеку- дублікат, яку ви включаєте двічі. Ніколи не використовуйте compile fileTree(...), він приховує занадто багато очевидних помилок.
Джошуа Пінтер

13

У моєму випадку згадана помилка "дублювання запису" виникла після встановлення multiDexEnable=trueв build.gradle.

Для повного усунення помилки насамперед ознайомтеся з Налаштуванням програм із методами понад 64 К (особливо "Налаштування додатка для Multidex за допомогою Gradle").

Крім того, шукайте випадки класу, які викликають помилку "повторного введення" за допомогою ctrl + n в Android Studio. Визначте модуль і залежність, що містить дублікат, і виключіть його з збірки, наприклад:

compile ('org.roboguice:roboguice:2.0') {
    exclude module: 'support-v4'
}

Довелося спробувати кілька міток модулів, поки це не спрацювало. Виключення "support-v4" вирішує проблеми, пов'язані з "java.util.zip.ZipException: копія запису: android / support / v4 / *"


9

Я розумію, що існують дублікати посилань на один і той же API (ймовірно, різні номери версій). Налагоджувати його слід досить легко при побудові з командного рядка.

Спробуйте ./gradlew yourBuildVariantName --debugз командного рядка.

Порушення предмета буде першим невдачею. Приклад може виглядати так:

14:32:29.171 [INFO] [org.gradle.api.Task] INPUT: /Users/mydir/Documents/androidApp/BaseApp/build/intermediates/exploded-aar/theOffendingAAR/libs/google-play-services.jar

14:32:29.171 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':BaseApp:packageAllyourBuildVariantNameClassesForMultiDex'

14:32:29.172 [LIFECYCLE] [class org.gradle.TaskExecutionLogger] :BaseApp:packageAllyourBuildVariantNameClassesForMultiDex FAILED'

У випадку, наведеному вище, файл aar, який я включив до мого каталогу libs (theOffendingAAR), містив баночку служб Google Play (так, вся справа. Так, я знаю.), А мій файл BaseApp збірки використовував послуги локації:

compile 'com.google.android.gms:play-services-location:6.5.87'

Ви можете безпечно видалити порушений елемент із ваших файлів збірки, очистити та відновити (якщо потрібно повторити).


1
То що робити, якщо мені потрібна бібліотека, яка ображає нас
Януш

1
Це допомогло мені вистежити
ображену

1
Це не допомагає. При видаленні ображеної бібліотеки модуль не вдасться зібрати
Utsav Gupta

9

перевірте свої версії залежностей, у вас повинні бути сумісні версії, спеціально звертайте увагу на пакети com.google, повинні бути такі ж версії, як:

compile 'com.google.android.gms:play-services:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'

Обидва є 8.3.0, якщо у вас є інша компіляція версій, викине це виключення.


Спасибі, працюю досконало, у мене є три різні комбінації служб google play 'com.google.android.gms: play-services-analytics: 8.4.0' compile 'com.google.android.gms: play-services-ads: 8.3 .0 'компілювати' com.google.android.gms: play-services-plus: 8.4.0 '
Samadhan Medge

5

Просте видалення файлу Jar із залежностей gardle.project як v7 та запустіть проект


Це для мене робота, просто видаліть "компілювати файли ('libs / android-support-v13.jar')" з "залежностей" у моєму "build.gradle (Модуль: додаток)". Для довідки ви отримаєте цю помилку після імпорту затьмарення форми проекту в Android Studio.
rafaellorey


3

з'ясуйте, що вкладка залежить від підтримки v4, і виключіть її.

код у build.gradleтакий:

androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
    // http://stackoverflow.com/a/30931887/5210
    exclude group: 'com.android.support', module: 'appcompat'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude module: 'recyclerview-v7'
}

У моїй ситуації в lib 'espresso' є баночка, яка називається support-v4, і в моєму проекті 'app' є однакова підтримка-v4, виключаючи support-v4 при імпорті еспресо.

PS: схоже, compile projectне може працювати зexclude


1

Це тому, що ви додавали бібліотеку і давали її залежність від модуля не один раз.

У моєму випадку я додав бібліотеку як модуль і як залежність від Gradle як.

Видалення одного джерела додавання бібліотеки (я видалив залежність від Gradle) вирішив мою проблему.


Альтернативно, це питання було вирішено для мене, видаливши банку з "libs dir" та утримуючи залежність від граду.
droideckar

Так! Видалення будь-якого єдиного джерела призведе до проблеми. Зберігати залежність від ступеня добре.
Рахул Растогі

0

Для помилки: виконання не вдалося виконати завдання ': app: transformClassesWithJarMergingForDebug' com.android.build.api.transform.TransformException java.util.zip.ZipException дублікат запису com / google / gson / annotations / Expose.class

Ось що я зробив:

1) Видаліть файл gson-2.5.jar. 2) конфігурації {all * .exclude module: 'gson-2.5'}


Питання було не про Gson
OneCricketeer

0

Я зіткнувся з цим питанням, коли я вручну скопіював банку в libs, а також згадав про залежність у файлі gradle. Ви також перевіряєте у своїй проектній структурі, чи копіюється той самий файл jar в будь-яку іншу папку, наприклад, libs або в папці проекту.


0

У мене була та сама проблема після оновлення Android SDK. Мені вдалося запустити програму в програмі buildToolsVersion '23.0.1', я отримав таку ж помилку, коли змінився наbuildToolsVersion '24.0.3'

Я вирішив проблему, оновивши версію java з 1,7 до 1,8 с compileSdkVersion 24


0

Ця проблема коштувала мені цілого дня. Нарешті я знизив версію бібліотеки firebase-ui з 2.0.0 до 1.2.0 і додав наступний код у файл build.gradle проекту на рівні проекту:

allprojects {
    repositories {
        jcenter()

        // Add the following code to your project level build.gradle
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
}

1
Версія інтерфейсу Firebase залежить від того, яку версію Firebase ви насправді склали
OneCricketeer

0

У мене також є проблема через те, що у мене є компіляція 'com.android.support:appcompat-v7:24.0.0-alpha1', але я додав вторинну компіляцію recilerlerview 'com.android.support:recyclerview-v7:24.0.2' .. я змінив версію так само, як compat, як (24.0.2 інтед 24.0.0).

я отримав відповідь ... може, це допоможе комусь.


0

У моєму випадку згадана помилка "повторюваного запису" виникла після встановленняmultiDexEnable = true у build.gradle.

а точна помилка, яку я отримував, була нижче:

Error:Execution failed for task 
':android:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: 
java.util.zip.ZipException: duplicate entry: 
com/google/android/gms/internal/zzqx.class

Отже, спочатку я шукаю клас, який викликає помилку "повторюваного входу" за допомогою ctrl + n в Android Studio і шукав com / google / android / gms / Internal / zzqx.class, а потім показував 2 записи для gms class з однією версією 8.4.0 та 1 з версією 11.6.0.

Щоб виправити це, я зробив обидва, щоб використовувати 11.6.0, і це було виправлено прикладом

раніше

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:8.4.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

Після

    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"
    compile "com.google.android.gms:play-services-ads:11.6.0"

Відновлено виправлення.


0

У моєму випадку точна помилка була нижче

': android: transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: копія запису: com / google / android / gms / Internal / zzqx.class

Я використовував іншу версію google apis, тобто в одному з файлів gradle

if (!project.hasProperty('gms_library_version')) {
        ext.gms_library_version = '8.6.0'
   }

проте в інших модулях версії 11.6.0, як показано нижче

   compile "com.google.android.gms:play-services-ads:11.6.0"
    compile "com.google.android.gms:play-services-games:11.6.0"
    compile "com.google.android.gms:play-services-auth:11.6.0"

Однак, щоб знайти це, я зробив ctrl + n в андроїд-студії і ввів ім'я класу zzqx.class, а потім відобразив два файли jar для цього класу, і тоді я зрозумів, що десь я використовую версію 8.6.0. Зміна 8.6.0 на 11.6.0 та відновлення проекту було вирішено.

Сподіваюся, це допомагає.

Детальніше про це тут https://www.versionpb.com/tutorials/step-step-tutorials-libgdx-basic-setup-libgdx/implementing-google-play-services-leaderboards-in-libgdx/


0

Для мене щось подібне сталося, коли я випадково додав

apply plugin: 'kotlin-android'

до мого модуля бібліотеки Android. Видалення рядка виправляє проблему.


0

Я спробував усі вищезазначені рішення, але не працював для мене. Я спробував оновити бібліотеки за структурою goto project> app. І це працює для мене! Сподіваюся, що ця відповідь комусь допоможе.


-1

Спробуйте це:

android {
configurations {
        all*.exclude  module: 'PhotoView'  //去除重复依赖库
    }
}

Це питання стосується підтримки бібліотеки v4, а не PhotoView
OneCricketeer

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.