Error de icono de Android Studio Gradle, fusión de manifiesto


141

Sigo viendo este mensaje y no estoy seguro de cómo resolverlo para siempre.

Error:(43, 9) Attribute application@icon value=(@drawable/new_app_icon) from AndroidManifest.xml:43:9
    is also present at com.github.erizet.signala:signala-longpolling:0.20:7:18 value=(@drawable/ic_launcher)
    Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:40:5 to override
:OpenBook:processDebugManifest FAILED
Error:Execution failed for task ':OpenBook:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

Intenté agregar android:replace="android:icon"a mi manifiesto incluso con mi icono.

Traté de eliminarlo android:icon="@drawable/ic_launcherde la biblioteca pero sigue volviendo cuando construyo porque se importó de Maven

Algunas ideas ?


Este problema ocurre cuando aparece un problema en las etiquetas del archivo de manifiesto. Por favor, consulte la respuesta stackoverflow.com/a/39509659/2732632
Kimmi Dhingra

Me enfrenté al mismo problema cuando agregué permisos duplicados en manifiesto.
Cloy

Respuestas:


342

Parece ser culpa de la herramienta de fusión mainfest para gradle.

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

Lo resolví agregando a mi etiqueta de manifiesto xmlns:tools="http://schemas.android.com/tools"

Luego agregado tools:replace="android:icon,android:theme"a la etiqueta de la aplicación

Esto le dice a la fusión que use mi icono y tema de manifiesto y no otras bibliotecas

Espero que ayude, gracias


66
El problema aún persiste para mí. Trabajando en Android Studio 1.1.
Bolling

1
¡Gracias! Trabajó para mí
Sandeep

44
Últimas versiones de Android 2.0. no funciona. Quien haya respondido debería actualizar esta Q si se refería a salvar generaciones más, será inútil pronto
Karue Benson Karue

3
Studio 2.2 de hoy todos tienen esto y no funcionan este problema
Prasad

2
no funciona para Android Studio 2.2 con gradle 2.2.0.
DysaniazzZ

54

Tengo el mismo problema, lo soluciono así agregando xmlns:tools="http://schemas.android.com/tools"a la parte superior del archivo mainfest y agrego tools:replace="android:icon"para que se vea como

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"  // add tools line here 
    package="yourpackage">


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon"> ///add this line 

.....

</application>

</manifest>

1
no funciona para Android Studio 2.2 y gradle 2.2.0.
DysaniazzZ

respuesta brillante
Gundu Bandgar

10

tengo el mismo error, solo este código resuelve mi problema, quiero compartirlo con ustedes:

en Manifest.xml:

  • agregue este código en la parte superior de su archivo xml:

    xmlns:tools="http://schemas.android.com/tools"

  • Luego agregado:

    tools:replace="android:icon,android:theme,android:label,android:name" a la etiqueta de la aplicación


@DysaniazzZ, no depende de Android Studio. ver registro de mensajes.
Adnan Abdollah Zaki

Ok, ya vere.
DysaniazzZ

@Funwise, revisa tu registro de mensajes, creo que no depende del estudio de Android.
Adnan Abdollah Zaki

@ adnan9011, mi problema era tener permisos duplicados en el archivo Manifiesto.
Darush

9

La respuesta de shimi_tap es suficiente. Lo que debe recordarse es elegir solo lo que necesita. Elija entre {icono, nombre, tema, etiqueta}. Agregué tools:replace="android:icon,android:theme", no funciona. Agregué tools:replace="android:icon,android:theme,android:label,android:name", no funciona. Funciona cuando agregué tools:replace="android:icon,android:theme,android:label". Así que averigua cuál es exactamente el conflicto en tus archivos de manifiesto.


1
no funciona para Android Studio 2.2 y gradle 2.2.0.
DysaniazzZ

5

Simplemente agregue xmlns:tools="http://schemas.android.com/tools"a su etiqueta de manifiesto, y luego debe agregar tools:replace="android:icon" antes android:icon="@mipmap/ic_launcher" .


3

Este error también ocurre cuando el minSdk de su aplicación es más alto que el minSdk de cualquier biblioteca.

app's minSdk >= libraries minSdk

1
¿entonces, cuál es la solución?
itzhar

2

TENGO LA SOLUCIÓN DESPUÉS DE MUCHO TIEMPO

solo consigue tu ic_launcher y pégalo en tu carpeta de dibujos,

Ve a tu manifiesto y cambie android: icon = "@ drawable / ic_launcher"

Limpia tu proyecto y reconstruye

Espero que te ayude


2

Tuve este problema al cambiar el icono de dibujable a mipmap.

Solo perdí la línea

tools:replace="android:icon"

en el manifiesto


1

Por alguna razón, Android Studio no le gusta llamar al icono de la aplicación desde una carpeta dibujable. Entonces, en ese caso, creé el directorio de recursos mipmap en la carpeta res.

Haga clic con el botón derecho en la carpeta res> nuevo> directorio de recursos de Android> tipo de recurso: mipmap y ahora suelte cualquier icono allí y luego haga referencia a eso en el archivo de manifiesto. Compartir esto ya que este método funcionó para mí.

android: icono: @ drawable / ic_launcher "

a

android: icon = "@ mipmap / ic_launcher"


para mí, establecer el estilo parecía mejor android:theme="@style/AppTheme" ver -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS

1

Si nada de eso funciona, cierre Android Studio. Vaya a app / src / main, abra el archivo AndroidManifest.xml en un editor de texto (como sublime), elimine / reemplace las líneas de error, guarde y vuelva a abrir android studio.


1

Cuando un valor de atributo contiene un marcador de posición (consulte el formato a continuación), la fusión de manifiesto intercambiará este valor de marcador de posición con un valor inyectado. Los valores inyectados se especifican en build.gradle. La sintaxis para los valores de marcador de posición es $ {name} ya que @ está reservado para enlaces. Después de que se produjo la última fusión de archivos, y antes de que se escriba el archivo de manifiesto de Android combinado resultante, todos los valores con un marcador de posición se intercambiarán con valores inyectados. Se generará una ruptura de compilación si se desconoce el nombre de una variable.

de http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Build-error


0

La respuesta de Shimi_tap es la forma correcta de solucionar el problema. Si desea utilizar una herramienta de fusión antigua, puede agregarla al archivo build.gradle

android {useOldManifestMerger true}


2
"En 1.0, eliminamos la capacidad de invocar la antigua fusión de manifiesto ..." tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg

No se pudo encontrar el método useOldManifestMerger () para argumentos [verdadero] en el proyecto ': aplicación' de tipo org.gradle.api.Project.
DysaniazzZ

0

Para mí, este problema ocurrió después de actualizar los servicios de Google Play. Una de las bibliotecas que estaba usando incorporó esta biblioteca usando el "+" en su referencia de gradel, como

compile 'com.google.android.gms:play-services:+'

Esto creó un problema porque la versión mínima a la que apuntaba esa biblioteca era menor que la versión actual de los Servicios de Google Play. Encontré esto simplemente mirando en los registros.


0

En su .gradlecambio MinSDK, por ejemplo:

  • build.gradle (Módulo: aplicación)
    • antes de: minSdkVersion 9
    • después: minSdkVersion 14

etc.


0

Probé toda la solución mencionada anteriormente

en Manifest.xml:

  • agregue este código en la parte superior de su archivo xml dentro de la etiqueta de manifiesto:

    xmlns:tools="http://schemas.android.com/tools"

  • Luego agregado:

    tools:replace="android:icon,android:theme,android:label,android:name" a la etiqueta de la aplicación

pero nada de eso funcionó. Necesitaba eliminar un archivo xml que estaba situado en

mipmap-anydpi-v26 / ic_launcher_round.xml

Estaba probando la aplicación en

Samsung Galaxy 8 con SO versión 8.0.0

¿Es realmente una solución?


0

Dentro del archivo AndroidManifest.xml, agregue lo siguiente al applicationnodo:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.