java.util.zip.ZipException: повторяющаяся запись во время packageAllDebugClassesForMultiDex


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 как зависимости gradle и 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файле app dir добавьте эту команду:

android{


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

}

меня устраивает! Можешь попробовать!


19
После добавления этих фрагментов невозможно получить поддержку v4. Есть идеи?
Nisarg

@Nisarg тоже случается со мной.
CJ_COIMBRA

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

@Nisarg Можете ли вы помочь мне снова перекомпилировать, у меня тоже есть та же проблема, что и у вас, фрагменты и taskstackbuilder перестали разрешаться
Гаурав Арора

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
есть ли какое-нибудь правильное решение. У
меня такая

2
Ошибка: (5, 30) ошибка: пакет android.support.v4.app не существует Получение этой ошибки после добавления ответа
Анкит Таккар,

1
Куда это должно идти, я новичок в gradle, и в моем текущем проекте есть 5 файлов build.gradle, ни в одном из них нет, configurationsи, похоже, не имеет значения, куда я его положил, я получаю ошибки, например, не могу разрешить символ «исключить» или не удается разрешить символ «все»
Стивен Дж. Стивен

25

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

просто удали

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

в файле Gradle

и добавить зависимость в файл gradle.

Меня устраивает ..


Эта ошибка возникла при импорте старого проекта eclipse, извините, на самом деле я удалил часть справочной библиотеки и добавил такую ​​же зависимость в файл gradle.
Паранитаран Сараванаперумал,

1
Работал для меня (также импорт из старой конфигурации eclipse). После этого потребовалась чистка и восстановление.
Пако Абато

17
Почему я должен доверять одному по имени Саурон?
matthias_b_nz 07

Остановил эту конкретную ошибку, но вызвал десятки других. Иногда вам нужны эти зависимости. Как бы странно это ни звучало, на этот раз Саурон был прав.
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), включал файл jar служб Google Play (да, все, да, я знаю.), В то время как мой файл сборки BaseApp использовал службы определения местоположения:

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

Вы можете безопасно удалить проблемный элемент из файла (ов) сборки, очистить и пересобрать (при необходимости повторите).


1
Так что, если мне понадобится некорректная библиотека?
Януш

1
Это помогло мне отследить оскорбительную библиотеку :)
speedynomads

1
Это не помогает .. при удалении вредоносной библиотеки модуль не может скомпилировать
Утсав Гупта

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 compile 'com.google.android.gms: play-services-analytics: 8.4.0' compile 'com.google.android.gms: play-services-ads: 8.3 .0 'compile' com.google.android.gms: play-services-plus: 8.4.0 '
Самадхан Медж

5

Просто удалите файл Jar из зависимостей gardle.project как v7 и запустите свой проект


Это работает для меня, просто удалите «файлы компиляции ('libs / android-support-v13.jar')» из «зависимостей» в моем «build.gradle (Module: app)». Для справки вы получите эту ошибку после импорта формы проекта eclipse в Android Studio.
rafaellorey 02


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' такой же support-v4, исключая support-v4 при импорте эспрессо.

PS: вроде compile projectне может работать сexclude


1

Это связано с тем, что вы добавляли библиотеку и указали ее зависимость от модуля более одного раза.

В моем случае я добавил библиотеку как модуль и как зависимость от Gradle.

Удаление одного источника добавления библиотеки (я удалил зависимость от gradle) решило мою проблему.


в качестве альтернативы эта проблема была исправлена ​​для меня путем удаления jar из каталога libs и сохранения зависимости от gradle.
droideckar 01

Yeh! Удаление любого единственного источника решит проблему. Сохранение зависимости от градиента - это хорошо.
Рахул Растоги

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

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


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, но я добавил библиотечный компилятор recyclerview «com.android.support:recyclerview-v7:24.0.2» .. Я изменил версию так же, как и compat like (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 с одной версией 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

В моем случае точная ошибка была ниже

': Андроид: transformClassesWithJarMergingForDebug.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: повторяющаяся запись: com / google / android / gms / internal / zzqx.class

Я использовал другую версию API Google, т.е. в одном файле градиента модулей

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 в студии Android и ввел имя класса zzqx.class, а затем отобразил 2 файла 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> app. И у меня это работает! Надеюсь, этот ответ кому-то поможет.


-1

Попробуй это:

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

Этот вопрос касается библиотеки поддержки v4, а не PhotoView
OneCricketeer

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.