Pregunta Gradle terminó con un valor de salida distinto de cero 1 (ic_launcher.png: error: archivo duplicado)


Tengo este extraño error con Gradle, ¡ayúdenme!

/.../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

Antes de que funcionara normalmente, pero desde que puse classpath com.android.tools.build:gradle:1.2.2, esto me causa errores


75
2018-04-30 10:32


origen


Respuestas:


De acuerdo a La explicación de Xavier Durochet sobre G +, se debe a que una de las bibliotecas que usa tiene su propio ic_launcher.png - que por supuesto no deberían (más sobre eso en la parte inferior).

Lo más probable es que los dos iconos mencionados en el registro sean diferentes: uno es tuyo y el otro es probablemente el ícono genérico de Android que alguien olvidó eliminar de la biblioteca.

Para ver la dependencia ofensiva, golpea Ctrl + Shift + N  dos veces (para concordancia sin proyecto) y escriba ic_launcher.png (Ver la última línea en la captura de pantalla) enter image description here

Para solucionar el problema temporalmente, agregue el -v4 calificador a sus carpetas de recursos dibujables (o mueva solo ic_launcher.png a *dpi-v4 si tiene sus razones) - créditos a Xavier Durochet para la solución. También puede cambiar el nombre de su icono a otra cosa y hacer el cambio correspondiente a AndroidManifest.xml

enter image description here

El verdadero problema es que la libra ofensiva lleva los iconos inútiles. Las bibliotecas que tienen sus propios recursos (como ActionBarSherlock o la propia biblioteca Support v7 de Google) utilizan esquemas de nomenclatura distintivos para evitar colisiones con los nombres de sus recursos (abs_, abc_)

Los íconos del iniciador no tienen nada que ver con una biblioteca, por lo que le recomiendo que notifique al autor de la lib que está utilizando que se olvidó de eliminar la redundancia. ic_launcher.png archivos.

También vale la pena mencionar, como Barry Carroll señaló muy precisamente en la misma discusión, esto no significa que tus recursos nunca se superpongan con los de la biblioteca: hay muchos legítimo razones para anular los recursos de una lib con los suyos propios (por ejemplo, cambiar el aspecto de una actividad proporcionada por la biblioteca) y la lógica de fusión de recursos del complemento de gradle sí lo permite, a propósito.

Es solo que en este caso particular, el conflicto ocurre cuando la lib está atrasada en la versión de plugin android gradle (pre-1.2.2) en cuyo caso los recursos terminan en dos diferentes *dpi carpetas - con y sin el -v4 índice; pero en realidad están en el mismo "cubo" de recursos, por lo que el sistema los considera duplicados.

Este problema hace sacar lo inútil ic_launcher.png anular (en realidad, una colisión - debido a la falla) pero esta situación no es universalmente mala para otros tipos de recursos.

Es decir. a veces usted anula intencionalmente el recurso de una libra y esta falla seguirá causando que el mensaje de error aparezca. Esta vez no hay ningún problema real con los nombres de los recursos, por lo que la solución temporal anterior o la versión del complemento son el camino a seguir.


112
2018-04-30 21:16



Tuve el mismo problema al usar una biblioteca de terceros. (RomainPiel / Shimmer-androidbiblioteca en Github)

Para resolverlo, moví mis archivos ic_launcher.png de la carpeta dibujable a la carpeta mipmap. Y problema resuelto

enter image description here


27
2018-05-06 08:50



Degradación a com.android.tools.build:gradle:1.1.3 aplasté mi problema


19
2018-05-01 18:23



Aquí está el método general para encontrar el problema:

correr

./gradlew build --stacktrace -info

y Encontrará los detalles de los errores. Encontré mi error: una clase duplicada causó un error de nivel SUPERIOR, y eliminar el duplicado resolverá el problema.


13
2018-06-13 05:14



Para mí, un simple "proyecto limpio" y un "proyecto de reconstrucción" hicieron el truco.


10
2017-09-04 05:07



Actualice a 1.2.3, pero asegúrese de que su gradle y buildToolsVersion estén idénticamente en su proyecto y los aars utilizados.

En caso de que use libs externas donde no puede controlar la versión gradle / build: Póngase en contacto con el autor o consulte las fuentes por su cuenta. Algunas bibliotecas tienen iconos de iniciador no utilizados que causarán este conflicto. Eliminar estos iconos resolverá su problema. Las fuentes de nombre idéntico (por ejemplo, menu.xml) también podrían causar este problema en casos excepcionales. Una solución fácil sería cambiar el nombre de su recurso.


2
2018-05-20 07:55



Simplemente cambie el nombre de ic_launcher.png a otra cosa (por ejemplo, ico_launcher.png)


1
2018-05-25 11:21