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 75

13 ответов:

по данным объяснение Ксавье Дюроше на G+, это связано с тем, что одна из библиотек, которые вы используете, имеет свой собственный ic_launcher.png -- чего они, конечно, не должны (Подробнее об этом внизу).

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

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

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

enter image description here

реальная проблема заключается в том, что оскорбительная 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. И проблема решена.

enter image description here

снизить до com.андроид.инструменты.сборка: gradle: 1.1.3 sloved мой вопрос

здесь общий метод, чтобы найти проблему:

выполнить

./gradlew build --stacktrace --info

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

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

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

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

просто переименовать ic_launcher.png к чему-то еще (например, ico_launcher.png)

в моем случае я добавил Апостроф s ('s) к строкам.XML-файл. Проверьте ребят на любую такую ошибку и удалите ее, безусловно, поможет. Это так раздражает IDE не может показать ошибку правильно, а делает все ресурсы из синхронизации..

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

просто Rename the Image (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}}'
}

обновление до новейшего плагина gradle 1.5.0 sloved этот вопрос. Обновите следующий скрипт в вашем корне build.gradle file

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

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