Сбой сборки Android Studio - сбой при выполнении задачи ':app:dexDebug'

Я новый разработчик Android, и файлы сборки меня всегда пугают.:D Я использую некоторые библиотеки третьей части в проекте

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
    compile 'de.hdodenhof:circleimageview:1.2.1'
    compile 'com.github.flavienlaurent.datetimepicker:library:0.0.2'
}

В дополнение к этому я также использую MPAndroidChart(единственный jar в папке lib), который доступен только как файл jar, а не как зависимость gradle.

MPAndroidChart использует NineOldAndroids как зависимость, и я подозреваю, что одна из моих других библиотек также использует ее, и это вызывает сбой сборки.

Есть идеи, как заставить обе эти библиотеки вести себя?

Я проверил похожие вопросы и обнаружил, что это была именно моя проблема - Ошибка Gradle - Выполнение не удалось для задачи ':app:dexDebug'

Но он включал библиотеку NineOldAndroids самостоятельно. Поэтому он просто удалил эту строку, и она работала.

Одна идея, которая у меня была, заключалась в том, чтобы отделить банку и включить их в качестве java-файлов в мой проект, но это казалось излишним для этой проблемы. Я уверен, что должен быть более простой способ?

Это вся моя ошибка

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/nineoldandroids/animation/ValueAnimator$AnimatorUpdateListener;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    C:\Users\manu.joseph\AppData\Local\Android\sdk\build-tools\21.1.2\dx.bat --dex --no-optimize --output C:\Users\manu.joseph\AndroidStudioProjects\WriteTrack\app\build\intermediates\dex\debug --input-list=C:\Users\manu.joseph\AndroidStudioProjects\WriteTrack\app\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
    2
Output:

    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/nineoldandroids/animation/ValueAnimator$AnimatorUpdateListener;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)

4 ответа

Решение

Добавьте это в свой build.gradle:

 configurations {
    all*.exclude group: 'com.nineoldandroids'
}

У меня отлично работает;)

Я новый разработчик Android и незадолго до публикации этого ответа, я тоже сталкиваюсь с той же проблемой. Поиск в Google и только 2 вопроса о переполнении стека. Ваш вопрос и вопрос от stackru, который вы задали там.

Каким-то образом после удаления неиспользуемой библиотеки зависимостей через структуры проекта (Ctrl+ Alt+ Shift+ S), в моем случае, это

compile 'com.rengwuxian.materialedittext:library:1.8.2'

Синхронизировать Gradle и затем пуф! Я надеюсь, что это работает и для вас.

Удалите следующую строку и попробуйте снова

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

В конце концов, я добавил библиотеку как внешний проект, который помог мне.

Подробные инструкции здесь.. Как добавить проект библиотеки в Android Studio?

Надеюсь, это поможет кому-то..

Другие вопросы по тегам