Android Studio: Gradle - сбой сборки. Ошибка выполнения для задачи ': dexDebug'

Ошибка:

Gradle: Execution failed for task ':vertretungsplan:dexDebug'.
> Failed to run command:
    P:\Android-Studio\sdk\build-tools\18.0.1\dx.bat --dex --output P:\Projekte\VertretungsplanProject\vertretungsplan\build\libs\vertretungsplan-debug.dex P:\Projekte\VertretungsplanProject\vertretungsplan\build\classes\debug P:\Projekte\VertretungsplanProject\vertretungsplan\build\dependency-cache\debug P:\Android-Studio\sdk\extras\android\m2repository\com\android\support\support-v4\18.0.0\support-v4-18.0.0.jar P:\Projekte\VertretungsplanProject\vertretungsplan\libs\commons-io-2.4.jar P:\Projekte\VertretungsplanProject\vertretungsplan\build\exploded-bundles\VertretungsplanProjectLibrariesActionbarsherlockUnspecified.aar\classes.jar
Error Code:
    2
Output:
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/LoginActivity$2.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/MainActivity$1.class
    trouble processing:
    bad class file magic (cafebabe) or version (0033.0000)
    ...while parsing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    ...while processing de/MayerhoferSimon/Vertretungsplan/YQL/YqlVplanParser.class
    3 warnings
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
        at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
        at com.android.dx.command.dexer.Main.run(Main.java:232)
        at com.android.dx.command.dexer.Main.main(Main.java:174)
        at com.android.dx.command.Main.main(Main.java:91)

Структура проекта:

введите описание изображения здесь

build.gradle (actionbarsherlock)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
}

build.gradle (vertretungsplan)

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/commons-io-2.4.jar')
    compile project(':libraries:actionbarsherlock')
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 11
    }
}

settings.gradle

include ':vertretungsplan', ':libraries:actionbarsherlock'

Как исправить эту ошибку?


person maysi    schedule 02.08.2013    source источник


Ответы (22)


Правильный ответ: некоторые из ваших jar-файлов не компилируются. Вам следует зайти в свой файл build.gradle в своем проекте и посмотреть свои зависимости.

Если вы просто импортируете несколько файлов jar, вы можете попытаться удалить их и добавлять по одному. Это поможет вам определить, какой из них вызывает ошибку.

В моем случае я так и сделал, и когда я импортировал последний, приложение скомпилировалось. Так что я думаю, что настоящая проблема заключалась в том, что я импортировал слишком много файлов одновременно. Но теперь все работает.

person Friis1978    schedule 26.09.2013
comment
Если вы компилируете с помощью ./gradlew assembly --stacktrace --info, вы точно узнаете, какая jar плохая. - person Nir Hartmann; 04.03.2015
comment
@NirHartmann Быстрый вопрос, я бы поместил команду в градиент сборки? Я не был уверен, где его разместить. - person Fallenreaper; 05.08.2015
comment
@Fallenreaper не уверен, что я понимаю ваш вопрос, я имел в виду, что в вашем корневом каталоге проекта у вас есть файл exec gradlew, если вы запустите его с терминала или cmd, как я сказал, вы узнаете, где проблема, и затем вы сможете ее исправить . - person Nir Hartmann; 06.08.2015
comment
@ Fallenreaper - перешли к gradle / gradle в терминале и на входе ./gradlew assembly --stacktrace --info, но не получили такого каталога, это то, что вы имели в виду в своем предложении? - person dancingbush; 31.08.2015
comment
Это действительно полная помощь для меня - person bhavesh kaila; 19.11.2015

У меня внезапно возникла та же проблема, без каких-либо заметных изменений.

Я решил это, удалив каталог app/build и позволив gradle построить весь проект заново.

person ironmouse    schedule 10.05.2015
comment
Та же проблема здесь при добавлении действия для замены основного действия. Я выполнил чистку, но это не сработало. Спасибо за это решение. - person Climbatize; 06.07.2015
comment
Кроме того, попробуйте очистить папку app / build в проектах библиотеки, которые вы можете включить в свое приложение. - person Voy; 17.08.2015
comment
Хорошая попытка, но это не решило мою проблему: / - person Maxime T; 02.09.2015
comment
исправь мою проблему. Спасибо - person dian; 17.10.2015
comment
Удаление папки сборки действительно помогает. - person bhavesh kaila; 15.04.2016

Вы должны проверить, импортируется ли тот же самый JAR снова. В моем случае внутри банки был класс, который импортировался в другую банку. Так что просто проверьте, не включается ли какой-либо файл lib / class дважды во весь проект!

person user2899493    schedule 20.10.2013
comment
Для меня это было технически правильно, но произошло потому, что в мои зависимости в файле build.gradle была дважды включена библиотека поддержки Android с двумя разными версиями после добавления нового действия в проект. - person Josh; 22.02.2014
comment
Когда проблема была решена, я еще не закончил, но это привело меня к моему пути. Спасибо. - person Andreas Rudolph; 28.10.2014
comment
Решил проблему для меня, но я бы никогда не подумал о проблеме с дублированием JAR-файлов из сообщения об ошибке. Я импортировал Volley как модуль на уровне проекта, но поскольку я хотел иметь возможность переключаться между сборкой с AS и сборкой с Cordova, я настроил свою среду, чтобы добавить Volley в качестве плагина Cordova. После регенерации платформы в какой-то момент я получил это сообщение об ошибке. Ваш комментарий о том, что одни и те же библиотеки импортируются дважды, заставил меня понять, что мне следовало удалить настройки «Залп как импортированная библиотека», так что спасибо. - person Mark Birbeck; 16.04.2015

У меня возникла такая же ошибка, когда я попытался скомпилировать jar библиотеки utils в eclipse с использованием Java JRE 1.8 и использовать его в моем / libs / в Android Studio 1.1.0.

Моя Android Studio была настроена на использование JDK1.8.0.

Я переключил свой Eclipse на работу с JRE 1.7, и ошибка была исправлена. Eclipse: Window-> Preferences-> вкладка Java-> Compiler-> Compliance level 1.7. Скорее всего, вам будет предложено переключить вашу системную библиотеку JRE на jdk1.7.x_x.

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

person C4F    schedule 12.03.2015
comment
Спасибо! Это решило мою проблему с Android Studio 1.4 и Gradle экспериментально-0.2.1;) Мне пришлось вернуться к JDK 1.7.1, хотя, чтобы полностью исправить эту проблему - person Stef; 18.11.2015

У меня тоже была такая же проблема. В моем случае проблема началась после перезагрузки. Я закрыл свое приложение, затем закрыл Android Studio (в моем случае V1.1.0) и, наконец, нормальное завершение работы. После этого я изменил один java-файл, чтобы добавить объект RadioGroup, и тогда возникла проблема.

Я решил свою проблему, только заменив простой «0» на «1» в моем файле конфигурации Gradle, потому что основная причина проблемы была сгенерирована в процессе выполнения Gradle. Раньше у меня была версия 1.0.0, затем я изменил ее на 1.1.0, как показано на рисунках.

Местоположение конфигурации Gradle изменено Местоположение конфигурации Gradle изменено

Место, где я взял нужную версию (Файл -> Настройки -> Gradle -> Экспериментальный Место, где я взял правильную версию  из (Файл - ›Настройки -› Gradle - ›Experimental»></p>
                        <div class= person RunningWheels    schedule 25.03.2015

comment
переход на Gradle Toots версии 1.1.0 сработал для меня. Благодарность! - person kalan nawarathne; 30.04.2015

Проблема НЕ в Execution failed for task ':dexDebug'

если вы посмотрите на ошибку, показанную красным, вы увидите это

введите описание изображения здесь

Чтобы решить эту проблему навсегда, просто добавьте эти строки в свой build.gradle файл.

android {
    dexOptions {
        jumboMode = true
    }
}

Для получения дополнительной информации проверьте этот вопрос: здесь

person Sabri Meviş    schedule 28.09.2015

Убедитесь, что ваш файл AndroidManifest содержит имя пакета в узле манифеста. Установка имени пакета устранила эту проблему для меня.

person user1743999    schedule 10.01.2014
comment
В моем случае имя пакета было продублировано в 2 подпроектах библиотеки. - person sasha_trn; 22.12.2014

Пользователи ANDROID STUDIO попробуют следующее: -

Вам нужно добавить следующее к вашим зависимостям файла gradle:

compile 'com.android.support:multidex:1.0.0'

А затем добавьте строку ниже (приложение поддержки multidex) в тег application вашего манифеста:

android:name="android.support.multidex.MultiDexApplication"
person kumar kundan    schedule 08.11.2015

Можно исправить это, добавив

compile 'com.android.support:support-v4:18.0.0'

к зависимостям в vertretungsplan build.gradle, скомпилируйте, а затем удалите эту строку и скомпилируйте снова.

теперь это работает

person maysi    schedule 03.08.2013
comment
Почему v4: 18.0.0? Почему не v4: + - person IgorGanapolsky; 27.12.2013
comment
@IgorGanapolsky, потому что динамические версии в целом приводят к непредсказуемым результатам. - person aga; 10.12.2014

У меня была такая же проблема, вам следует сделать:

File -> Invalidate Caches / Restart

person mac229    schedule 22.10.2015

У меня возникла эта проблема, потому что я пытался использовать как библиотеку поддержки, так и appcompat:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
}

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

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    /*compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'*/
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.google.android.gms:play-services:8.3.0'
}
person Denis Kutlubaev    schedule 17.11.2015

У меня было две несовместимых зависимости.

Следующие ниже зависимости вызвали ошибку.

compile 'com.google.android.gms:play-services-fitness:8.3.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

Изменив зависимость от пригодности до версии 8.4.0, я смог запустить приложение.

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'
person bradley4    schedule 21.01.2016

Я обнаружил очень интересную проблему с Android Studio и обновлением mircrosoft до веб-браузера. Я "тупо" обновился до последней версии т.е. Конечно, Microsoft в своей безграничной мудрости точно знает, что делать с безопасностью. Когда я пытался скомпилировать свое приложение, я продолжал получать ошибку Gradle - build fails - Execution failed for task. посмотрев в стек, я увидел, что он не распознает путь к java.exe. Мне это показалось странным, поскольку я смог скомпилировать только накануне. Я добавил JAVA_HOME в переменные окружения для системы, закрыл Android Studio и снова открыл ее. Низкий, и вот, не появляется ли экран пилинга брандмауэра, спрашивая, хочу ли я, чтобы весь jave.exe прошел.

Что за кластер!

person user3763372    schedule 21.06.2014

(Это может быть неправильный поток, поскольку ваша проблема кажется более конкретной, но это поток, который я нашел при поиске ключевых слов проблемы)

Несмотря на все хорошие подсказки, единственное, что мне помогло, и чем я хотел бы поделиться на всякий случай, если все остальное не сработает:

Удалите каталог .gradle в своем домашнем каталоге и пусть он будет скомпилирован / повторно загружен для вас с помощью Android Studio.

Для меня исправлены всевозможные странные ошибки, которые нельзя было исправить переустановкой самой Android Studio или SDK.

person user2400553    schedule 27.01.2015

Причиной может быть дублирование библиотек после импорта из Eclipse IDE.

dependencies {
compile 'com.github.japgolly.android:svg-android:2.0.5'
compile 'com.google.android.gms:play-services:+'
compile 'com.android.support:appcompat-v7:21.0.3'
compile files('libs/androidannotations-api-2.7.1.jar')
compile files('libs/androidasync-2.1.2.jar')
//compile files('libs/google-play-services.jar')
compile files('libs/universal-image-loader-1.8.2.jar')}

У меня была такая же проблема после комментария:

//compile files('libs/google-play-services.jar')

В приложении нет ошибок.

person bheatcoker    schedule 08.04.2015
comment
Вы должны удалить локальные jar-файлы из папки libs и зависеть от центральных репозиториев. - person WonderCsabo; 09.06.2015

Я столкнулся с той же проблемой. Решено этим. Зайдите в actionbarsherlock -> module settings -> dependencies. Удалите библиотеку поддержки v4. В левом нижнем углу есть кнопка с плюсом, оттуда добавьте 1 зависимость библиотеки (выберите support-v4). Позвольте Gradle повторно синхронизировать и очистить проект после завершения.

person Starksky    schedule 07.06.2015

Многие из ответов здесь являются методом проб и ошибок, чтобы найти повторяющиеся зависимости, но если вы прокрутите немного вверх от строки Execution failed for task ':app:dexDebug'., он даст вам подсказку о дублированиях.

ошибка с подсказкой.

В моем случае у меня была следующая ошибка:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define L/com/parse/AbstractQueryController$1;
...
...
...
Execution failed for task ':app:dexDebug'.

Итак, я знал, что для исправления этой ошибки мне нужно найти повторяющиеся зависимости, которые определяют parse.AbstractQueryController

В моем случае у меня было два импортированных модуля, которые загружались в две разные библиотеки Parse. Когда мой проект загружал только один, моя проблема была решена.

person Max Worg    schedule 04.10.2015

Я также сталкивался с этой ошибкой, когда пакет в одном из моих файлов классов был неправильно написан. Многие из этих ответов сразу же переходят в файлы Jar, но я бы также проверил, правильно ли написаны ваши пакеты.

person nbroeking    schedule 02.11.2015

просто добавьте build.gradle

скомпилировать com.parse.bolts: bolts-android: 1. +

скомпилировать 'com.parse: parse-android: 1.11.0'

и синхронизировать проект с файлами Gradle  введите описание изображения здесь Но не добавляйте банку синтаксического анализа в библиотеки :) OKK

person Mourad MAMASSI    schedule 25.12.2015

Если вы также используете Dagger или Butterknife, вам следует добавить гуаву в качестве зависимости к вашему build.gradle основному файлу, например, пути к классам:

com.google.guava:guava:20.0

С другой стороны, если у вас возникли проблемы с большей кучей для демона Gradle, вы можете увеличить добавление в свой radle файл:

 dexOptions {
        javaMaxHeapSize "4g"
    } 
person Francisco Durdin Garcia    schedule 09.03.2017

В моем случае я сделал Build > Clean Project, и это сработало!

person Chintan Shah    schedule 04.10.2015

Очистка проекта с помощью сборки в строке меню работает для многих сценариев ошибок в Android Studio, и в этом случае она работает.

person code4salvation    schedule 01.04.2016
comment
У вас есть информация о том, почему это решит эту проблему? - person Greg Bair; 01.04.2016
comment
Coz каким бы то ни было образом вы не можете исключить библиотеки в build.gradle, и принятое решение также говорит нам об удалении и добавлении файлов jar, которые не могли быть скомпилированы ... Значит, это были не те файлы jar, которые вызывали проблемы , они работали до появления проблемы и продолжают работать после того, как я решил ее с помощью упомянутого метода, так что это проблема сборки, и код не был скомпилирован. Итак, как лучше всего в случае сбоя сборки очистить проект и перестроить. Спасибо! - person code4salvation; 03.04.2016
comment
для большинства людей это сообщение появляется, если они собираются создать свой проект. так что это определенно не решение - person maysi; 11.04.2016
comment
Надеюсь, вы прочитали ответ о сбое сборки из-за того, что зависимости не компилируются, и поэтому он появится только при сборке проекта. Чтобы оставаться в синхронизации с Android Studio, также убедитесь, что вы обновили Java до последней доступной версии, потому что это отдельная история до и после него. - person code4salvation; 11.04.2016