Gradle закончил с ненулевым значением выхода 1 (IC launcher.png: ошибка: дубликат файла)
Я получил эту странную ошибку с Gradle, пожалуйста, помогите мне!
/.../app/build/intermediates/res/debug/drawable-xxhdpi-v4/ic_launcher.png:
error: Duplicate file
/.../app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png:
Original is here. The version qualifier may be implied.
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command '/.../sdk/build-tools/22.0.1/aapt'' finished with non-zero exit value 1
раньше он работал нормально, но так как я поставил classpath com.андроид.инструменты.сборка: gradle: 1.2.2, это вызывает у меня ошибки
13 ответов:
по данным объяснение Ксавье Дюроше на G+, это связано с тем, что одна из библиотек, которые вы используете, имеет свой собственный
ic_launcher.png
-- чего они, конечно, не должны (Подробнее об этом внизу).скорее всего, два значка, упомянутые в журнале, различны: один из них ваш, а другой, скорее всего, общий значок android, который кто-то забыл удалить из библиотеки.
чтобы увидеть оскорбительную зависимость, нажмите
Ctrl + Shift + N
два раза (для сопоставления без проекта) и введитеic_launcher.png
(см. последнюю строку на скриншоте)чтобы обойти проблему временно, добавить
-v4
квалификатор к вашим папкам drawable resouce (или переместить простоic_launcher.png
до*dpi-v4
если у вас есть свои причины) -- кредиты Ксавье Дюроше для решения. Вы также можете просто переименовать свой значок во что-то другое и внести соответствующие измененияAndroidManifest.xml
реальная проблема заключается в том, что оскорбительная lib несет бесполезные значки. библиотеки, которые имеют свои собственные ресурсы (например, ActionBarSherlock или собственная библиотека поддержки V7 Google), используют отличительные схемы именования, чтобы избежать конфликтов с именами ресурсов (
abs_
,abc_
).значки запуска не имеют никакого отношения к библиотеке, поэтому я призываю вас уведомить автора lib, который вы используете, что они забыли удалите избыточные
ic_launcher.png
файлы.также стоит упомянуть, а Бэрри Кэрролл подмечены очень точно в та же дискуссия, это не означает, что ваши ресурсы никогда не должны перекрывать те, что в библиотеке: есть много законно причины для переопределения ресурсов lib с вашим собственным (например, изменение внешнего вида деятельности, предоставляемой библиотекой) и логика слияния ресурсов плагина gradle позволяет это, на цель.
просто в этом конкретном случае конфликт возникает, когда lib отстает от версии плагина android gradle (pre-1.2.2), и в этом случае ресурсы оказываются в двух разных
*dpi
папки -- с и без-v4
квалификатор; но они на самом деле находятся в одном и том же ресурсном "ведре", поэтому система считает их дубликатом.этот глюк тут вывести бесполезно
ic_launcher.png
override (на самом деле, столкновение -- из-за глюк) но эта ситуация не является плохой для других видов ресурсов.т. е. Иногда вы намеренно переопределяете ресурс lib, и этот глюк все равно приведет к появлению сообщения об ошибке. На этот раз нет реальной проблемы с именами ресурсов, поэтому временное решение выше или сдерживание версии плагина-это путь.
У меня была такая же проблема при использовании сторонней библиотеки.(RomainPiel / Shimmer-android библиотека на Github)
чтобы решить эту проблему, я переместил свой ic_launcher.png файлы из папки drawable в папку mipmap. И проблема решена.
здесь общий метод, чтобы найти проблему:
выполнить
./gradlew build --stacktrace --info
и вы найдете подробную информацию об ошибках. Я нашел свою ошибку: дублированный класс вызвал ошибку верхнего уровня, и удаление дублированного решит проблему.
обновление до 1.2.3, но убедитесь, что ваш gradle и buildToolsVersion идентичны в вашем проекте и используемых aars.
в случае, если вы используете внешние библиотеки, где вы не можете контролировать версию gradle / build: Свяжитесь с автором или проверьте источники самостоятельно. Некоторые библиотеки имеют неиспользуемые значки запуска, которые вызовут этот конфликт. Удаление этих значков решит вашу проблему. Источники с одинаковыми именами (например, меню.XML), также может вызвать эту проблему в редких случаях. Легко обходным путем было бы переименовать ваш ресурс.
в моем случае я добавил Апостроф s ('s) к строкам.XML-файл. Проверьте ребят на любую такую ошибку и удалите ее, безусловно, поможет. Это так раздражает IDE не может показать ошибку правильно, а делает все ресурсы из синхронизации..
Я знаю, что это не тот случай, который задается вопросом, но ошибка совершенно такая же, т. е. выполнение Gradle не удается.
просто
Rename
theImage
(Rightclick on the Image, Select Refactor and select Rename
). Это решит проблему, поскольку проблема возникла как одна изlibrary
также с помощьюimage
Сsame name
.
у меня была такая же проблема, и то, что ниже работает для меня:
- переименовать свой значок
- добавить
tools:replace="android:icon"
на<application>
тег в Манифестевы можете попробовать только первый шаг, но у меня все еще были проблемы при объединении файлов манифеста. Таким образом, он должен переопределить любой ресурс, используемый в библиотеке.
по этой ссылке здесь
или
изменить такой.
repositories { maven {url "https://clojars.org/repo/"} } dependencies { compile 'frankiesardo:icepick:{{latest-version}}' **provided** 'frankiesardo:icepick-processor:{{latest-version}}' }