Gradle завершено с ненулевым значением выхода 1 (ic_launcher.png: error: Duplicate file)

Я получил эту странную ошибку с 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.android.tools.build: gradle: 1.2.2, это вызывает ошибки

Ответ 1

Переход на com.android.tools.build: gradle: 1.1.3 перенесла мою проблему

Ответ 2

Согласно объяснение Xavier Durochet на G +, это связано с тем, что одна из библиотек использует собственный ic_launcher.png - который они конечно, не следует (подробнее об этом внизу).

Скорее всего, два значка, упомянутые в журнале, различны: один принадлежит вам, а другой, скорее всего, является общим символом андроида, который кто-то забыл удалить из библиотеки.

Чтобы увидеть оскорбительную зависимость, дважды нажмите Ctrl + Shift + N (для сопоставления без проекта) и введите ic_launcher.png (см. последнюю строку на снимке экрана) enter image description here

Чтобы временно решить проблему, добавьте квалификатор -v4 в ваши доступные папки для переноса (или переместите только ic_launcher.png в *dpi-v4, если у вас есть причины) - кредиты Xavier Durochet для решения. Вы также можете просто переименовать свой значок в другое и внести соответствующее изменение в AndroidManifest.xml

enter image description here

Реальная проблема заключается в том, что оскорбительная библиотека содержит бесполезные значки. Библиотеки, у которых есть свои собственные ресурсы (например, ActionBarSherlock или собственная библиотека поддержки V7 от Google), используют отличительные схемы именования, чтобы избежать столкновений с вашими именами ресурсов (abs_, abc_).

Значки Launcher не имеют никакого бизнеса в библиотеке, поэтому я рекомендую вам уведомить автора используемого вами lib, что они забыли удалить избыточные ic_launcher.png файлы.

Также стоит упомянуть, поскольку Барри Кэрролл очень точно отметил в та же самая дискуссия, это не означает, что ваши ресурсы никогда не должны перекрывать те, что находятся в библиотеке: существует множество законных причин переопределять ресурсы lib с помощью собственных (например, изменение внешнего вида деятельности, предоставляемой библиотекой) и gradle логика объединения ресурсов плагина позволяет это специально.

Именно в этом конкретном случае конфликт возникает, когда lib стоит в версии плагина android gradle (pre-1.2.2), и в этом случае ресурсы попадают в две разные папки *dpi - с и без квалификатора -v4; но они фактически находятся в одном и том же ресурсном "ведре", поэтому система считает их дублирующими.

Этот глюк вызывает бесполезное переопределение ic_launcher.png (на самом деле, столкновение - из-за сбоя), но эта ситуация не является универсальной для других видов ресурсов.

т.е. иногда вы намеренно переопределяете ресурс lib, и этот сбой по-прежнему вызывает сообщение об ошибке. На этот раз нет реальной проблемы с именами ресурсов, поэтому временное решение выше или сдерживание версии плагина - это путь.

Ответ 3

У меня была такая же проблема при использовании сторонней библиотеки. (RomainPiel/Shimmer-android библиотека на Github)

Чтобы решить эту проблему, я переместил файлы ic_launcher.png из папки с возможностью переноса в папку mipmap. И проблема решена.

enter image description here

Ответ 4

Вот общий метод для поиска проблемы:

Запустить

./gradlew build --stacktrace --info

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

Ответ 5

Для меня простой "чистый проект" и "перестроить проект" сделали трюк.

Ответ 6

Обновите до 1.2.3, но убедитесь, что ваши gradle и buildToolsVersion идентичны в вашем проекте и используемых арах.

Если вы используете внешние библиотеки, в которых вы не можете управлять версией gradle/build: Свяжитесь с автором или проверьте источники по своему усмотрению. В некоторых библиотеках есть неиспользуемые значки запуска, которые вызовут этот конфликт. Удаление этих значков поможет решить вашу проблему. Идентичные источники (например, menu.xml) также могут вызвать эту проблему в редких случаях. Легким обходным решением было бы переименование вашего ресурса.

Ответ 7

Просто переименуйте ic_launcher.png в нечто другое (например, ico_launcher.png)

Ответ 8

В моем случае я добавил apostrophe s (s) в файл strings.xml. Проверяйте ребят за любую такую ​​ошибку и удаляйте ее, безусловно, поможет. Это так раздражает, что IDE не может корректно отобразить ошибку, а делает все ресурсы несинхронизируемыми.

Я знаю, что это не тот случай, который задан в вопросе, но ошибка такая же, i.e. Gradle выполнение не получилось.

Ответ 9

Просто Rename Image (Rightclick on the Image, Select Refactor and select Rename). Это решит проблему, поскольку проблема возникла, поскольку один из library также использует Image с same name.

Ответ 10

У меня была одна и та же проблема, и для меня это работало:

  • переименуйте значок
  • добавьте tools:replace="android:icon" в тэг <application> в манифесте

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

Ответ 11

Следуйте по этой ссылке Здесь

или

Сделайте изменение следующим образом.

repositories {
maven {url "https://clojars.org/repo/"}
}
dependencies {
compile 'frankiesardo:icepick:{{latest-version}}'
**provided** 'frankiesardo:icepick-processor:{{latest-version}}'
}

Ответ 12

Обновление до новейшего gradle плагина 1.5.0 разрешило эту проблему. Обновление после script в корневом файле build.gradle

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
    ...
}

Ответ 13

Мне удалось вызвать эту проблему из-за несогласованной капитализации расширений имени файла. У меня было изображение .jpg в одном рисоваемом каталоге, но изображение того же имени файла, но .JPG в другой доступной директории. Имена файлов и каталоги были правильными, но расширения не были.