android-studio - aapt2exception - error failed linking file resources android studio
Gradle finalizó con un valor de salida distinto de cero 1(ic_launcher.png: error: archivo duplicado) (13)
Actualice a 1.2.3, pero asegúrese de que su gradle y buildToolsVersion estén idénticamente en su proyecto y en los aars utilizados.
En caso de que use bibliotecas externas donde no pueda controlar la versión gradle / build: póngase en contacto con el autor o compruebe 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 con nombres idénticos (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.
Recibí este extraño error con gradle, ¡ayúdame!
/.../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 como puse classpath com.android.tools.build:gradle:1.2.2 , esto me causa errores
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 la duplicada resolverá el problema.
En mi caso, he agregado apóstrofos (s) al archivo strings.xml. Verifique si hay algún error de este tipo y eliminarlo definitivamente ayudará. Es tan molesto que el IDE no puede mostrar el error correctamente sino que sincroniza todos los recursos.
Sé que no es el caso que se hace en la pregunta, pero el error es bastante igual, es decir, la ejecución de Gradle falla.
La actualización al último complemento de Gradle
1.5.0
resolvió este problema.
Actualice el siguiente script en su archivo raíz
build.gradle
buildscript {
...
dependencies {
classpath ''com.android.tools.build:gradle:1.5.0''
}
...
}
La degradación a com.android.tools.build:gradle:1.1.3 resolvió mi problema
Me las arreglé para desencadenar este problema mediante el uso de mayúsculas incoherentes de las extensiones de nombre de archivo. Tenía una imagen .jpg en un directorio dibujable, pero una imagen del mismo nombre de archivo pero .JPG en un directorio dibujable diferente. Los nombres de archivo y los directorios eran correctos, pero las extensiones no.
Para mí, un simple "proyecto limpio" y un "proyecto de reconstrucción" funcionaron.
Según
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 íconos mencionados en el registro sean diferentes: uno es suyo y el otro es probablemente el ícono genérico de Android que alguien olvidó eliminar de la biblioteca.
Para ver la dependencia ofensiva, presione
Ctrl + Shift + N
dos veces
(para la coincidencia sin proyecto) y escriba
ic_launcher.png
(Vea la última línea en la captura de pantalla)
Para
solucionar
el problema
temporalmente, agregue el calificador
-v4
a sus carpetas de recursos extraíbles (o mueva simplemente
ic_launcher.png
a
*dpi-v4
si tiene sus razones) - créditos a
Xavier Durochet
por la solución.
También puede cambiar el nombre de su icono a otro y hacer el cambio correspondiente a
AndroidManifest.xml
El verdadero problema es que la lib 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 nombres distintivos para evitar colisiones con los nombres de sus recursos (
abs_
,
abc_
).
Los íconos del iniciador no tienen por qué estar en una biblioteca, por lo que le recomiendo que notifique al autor de la biblioteca que está utilizando que se olvidó de eliminar los archivos redundantes
ic_launcher.png
.
También vale la pena mencionar , como Barry Carroll señaló con mucha precisión en la misma discusión , esto no significa que sus recursos nunca deberían superponerse a los de la biblioteca: hay muchas razones legítimas para anular los recursos de una biblioteca con los suyos (por ejemplo, cambiar el aspecto de una actividad proporcionada por la biblioteca) y la lógica de fusión de recursos del complemento Gradle lo permite, a propósito.
Es solo que en este caso particular, el conflicto ocurre cuando la lib está detrás de la versión del complemento de Android Gradle (anterior a 1.2.2) en cuyo caso los recursos terminan en dos carpetas
*dpi
diferentes, con y sin el calificador
-v4
;
pero en realidad están en el mismo "depósito" de recursos, por lo que el sistema los considera duplicados.
Este problema
ic_launcher.png
anulación inútil
ic_launcher.png
(en realidad, una colisión, debido al problema técnico), pero esta situación no es universalmente mala para otros tipos de recursos.
Es decir, a veces anula intencionalmente el recurso de una biblioteca y esta falla aún hará que aparezca el mensaje de error. Esta vez no hay un problema real con los nombres de los recursos, por lo que la solución temporal anterior o la retención de la versión del complemento son el camino a seguir.
Sigue este enlace Here
O
Haz un cambio como este.
repositories {
maven {url "https://clojars.org/repo/"}
}
dependencies {
compile ''frankiesardo:icepick:{{latest-version}}''
**provided** ''frankiesardo:icepick-processor:{{latest-version}}''
}
Simplemente
Rightclick on the Image, Select Refactor and select Rename
Rename
la
Image
(
Rightclick on the Image, Select Refactor and select Rename
).
Resolverá el problema ya que el problema ha surgido ya que una de las
library
también está usando la
image
con el
same name
.
Simplemente cambie el nombre de ic_launcher.png a otra cosa (por ejemplo, ico_launcher.png)
Tuve el mismo problema al usar una biblioteca de terceros (biblioteca RomainPiel/Shimmer-android en Github)
Para resolverlo, moví mis archivos ic_launcher.png de la carpeta dibujable a la carpeta mipmap. Y problema resuelto.
Tuve el mismo problema y lo que sigue funcionó para mí:
- renombra tu icono
-
agregue
tools:replace="android:icon"
a su etiqueta<application>
en el Manifiesto
Puede probar solo el primer paso, pero aún tuve problemas al fusionar los archivos de manifiesto. De esta manera, debe anular cualquier recurso que se haya utilizado en la biblioteca.