La fusión de manifiesto falló con múltiples errores en Android Studio

250

Entonces, soy un principiante en Android y Java. Acabo de empezar a aprender. Mientras estaba experimentando con Intent hoy, incurrí en un error.

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

Encontré algunas soluciones aquí e intenté implementarlas, pero no funcionó.

Este es mi build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"

defaultConfig {
    applicationId "com.example.rohan.petadoptionthing"
    minSdkVersion 10
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}

Este es mi AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>

package="com.example.rohan.petadoptionthing" >

<application

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".Second"
        />

    <activity android:name=".third"/>
    <activity android:name=".MainActivity"/>


</application>

Esta es mi primera semana con la codificación, lo siento si es algo realmente tonto. Soy realmente nuevo en esto y no encontré ningún otro lugar para preguntar. Lo siento si rompí alguna regla

Rohan Mallya
fuente
2
eliminar la línea <activity android: name = ". MainActivity" /> en su archivo menifest.xml
Pankaj Talaviya
10
Para obtener información detallada sobre el error, puede consultar Gradle Console en Android Studio en la esquina inferior derecha.
DragonT
Espero que este enlace sea ​​de utilidad.
Mortreza AD
Obtuve el mismo error, pero lo resolví manteniendo el mismo SDK mínimo en el proyecto y la biblioteca.
Raja Jawahar
youtu.be/K88WaSm3q8Y "La fusión del manifiesto falló con múltiples errores en Android Studio"?
Roman Pokrovskij

Respuestas:

965

Abra el manifiesto de la aplicación ( AndroidManifest.xml) y haga clic en Merged Manifest. Mira la imagen a continuación:

función de fusión de manifiesto de Android

Desde la imagen puede ver Error en la columna derecha, intente resolver el error. Puede ayudar a alguien con el mismo problema. Lee más aquí .

CLIFFORD PY
fuente
55
brillante ... no puedo encontrar palabras para expresar mi agradecimiento
Shahzad Afridi
2
en mi caso lo desplacé un poco hacia abajo para ver los errores
CodeToLife
Desafortunadamente, no hay ninguna pestaña "Manifiesto combinado" en Android Studio 3.5.2.
FractalBob
@FractalBob Estoy ejecutando 3.5.2 y veo la pestaña 'Manifiesto combinado' ... quizás tenga algún otro error antes de que se combinen los manifiestos.
sonyisda1
@ sonyisda1 ¿Está ejecutando en un entorno Linux? Tengo Ubuntu 18.04 LTS.
FractalBob
120

Eliminar <activity android:name=".MainActivity"/>de su archivo mainfest. Como ya lo ha definido como:

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Entonces, archivo de manifiesto que muestra ambigüedad.

Android Geek
fuente
31
Es una lástima que esta sea la respuesta aceptada, cuando solo corrige el código de Rowen pero es completamente inútil para cualquier otra persona. La respuesta de CLIFFORD realmente muestra cómo "ver los registros" como sugiere el mensaje de error.
Andrew Koster
Funciona muy bien, solo verifica y elimina cualquier entrada duplicada en el archivo AndroidManifest.xml.
vishwajit76
61

Para mí ESTO funciona

Encontrar errores de fusión en AndroidManifest.xml

ingrese la descripción de la imagen aquí

Haga clic en Manifiesto combinado en AndroidManifest.xml

ingrese la descripción de la imagen aquí

Puede ver el error de fusión de manifiesto en la columna derecha. Puede ayudar a resolver este problema.

Anirban
fuente
3
Esta es una solución genérica para este problema. Esto le ayuda a encontrar la verdadera razón de cualquier problema relacionado con esto.
JoeGalind
60

También estaba enfrentando los mismos problemas, y después de mucha investigación encontré la solución:

  1. La versión de min sdk debe ser la misma que la de los módulos que está utilizando, por ejemplo: la versión de min sdk de su módulo es 14 y la versión de min sdk de su aplicación es 9 Debe ser la misma.
  2. Si la versión de compilación de su aplicación y módulos no es la misma. De nuevo, debería ser el mismo ** En resumen, el build.gradlearchivo de aplicación y el manifiesto deben tener las mismas configuraciones **
  3. No hay duplicación como los mismos permisos agregados en el archivo de manifiesto dos veces, la misma actividad se menciona dos veces.
  4. Si ha eliminado alguna actividad de su proyecto, elimínela también de su archivo de manifiesto.
  5. A veces es debido a la etiqueta, icono, etc. etiqueta del archivo de manifiesto:

a) Agregue la xmlns:toolslínea en la etiqueta de manifiesto.

b) Agregar tools:replace=o tools:ignore=en la etiqueta de la aplicación.

Ejemplo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.slinfy.ikharelimiteduk"
    xmlns:tools="http://schemas.android.com/tools"
    android:versionCode="1"
    android:versionName="1.0" >

  <application
      tools:replace="icon, label"
      android:label="myApp"
      android:name="com.example.MyApplication"
      android:allowBackup="true"
      android:hardwareAccelerated="false"
      android:icon="@drawable/ic_launcher"
      android:theme="@style/Theme.AppCompat" >
  </application>

</manifest>
  1. Si dos dependencias no son de la misma versión, ejemplo: está utilizando la dependencia para appcompat v7: 26.0.0 y para facebook com.facebook.android:facebook-android-sdk:[4,5) facebook usa la vista de tarjeta de la versión com.android. soporte: cardview-v7: 25.3.1 y appcompat v7: 26.0.0 usa cardview de la versión v7: 26.0.0, por lo que hay discrepancia en dos bibliotecas y, por lo tanto, da error

Error: Falló la ejecución de la tarea ': aplicación: processDebugManifest'.

La fusión del manifiesto falló: Atributo metadatos#android.support.VERSION@value value = (26.0.0-alpha1) de [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 también está presente en [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1). Sugerencia: agregue 'tools: replace = "android: value"' al elemento en AndroidManifest.xml: 25: 5-27: 41 para anular.

Entonces, al usar appcompat de la versión 25.3.1, podemos evitar este error

Al considerar los puntos anteriores en mente, se librará de este problema irritante. También puedes consultar mi blog https://wordpress.com/post/dhingrakimmi.wordpress.com/23

Kimmi Dhingra
fuente
1
en mi caso se debió al tema del módulo que agregué, así que utilicé como herramientas: reemplazar "icono, etiqueta, tema"
turbandroid
en mi caso se debió al tema del módulo que agregué, así que utilicé como herramientas: reemplazar "icon, label, theme" y xmlns: tools = " schemas.android.com/tools ". gracias @ O'one
alfo888_ibg 23/03/18
14

Además de las soluciones disponibles, verifique esto también.
Si ha configurado android:allowBackup="false"en su, AndroidManifest.xmlentonces puede haber un conflicto android:allowBackup="true"en otras dependencias.

Solución
Tal como lo sugiere @CLIFFORD PY, cambie a Merged Manifestsu AndroidManifest.xml. Android Studio sugerirá añadir tools:replace="android:allowBackup"en <application />en tu AndroidManifest.xml.

Chintan Shah
fuente
12

Estaba enfrentando el mismo problema y acabo de agregar una línea en mi manifest.xml y funcionó para mí.

tools:replace="android:allowBackup,icon,theme,label,name"> 

agregue esta línea debajo

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:screenOrientation="portrait"
    android:supportsRtl="true"
    android:theme="@style/AppThemecustom"
    tools:replace="android:allowBackup,icon,theme,label">

Espero que ayude.

Pre_hacker
fuente
¡Muchas gracias! Estaba enfrentando este problema en un escenario muy específico causado por la página de soporte de Zendesk, al hacer clic en "adjuntar archivo". Intenté tantas respuestas de diferentes preguntas y solo tu comentario ayudó.
Natalie
@Natalie, me alegro de que haya ayudado :)
Pre_hacker
11

Simplemente agregue el código a continuación en la etiqueta de la aplicación Manifiesto de su proyecto ...

<application
        tools:node="replace">
sankalp
fuente
Muchas gracias
tej shah
8

En mi caso, estaba mostrando un error porque había una redundancia en el <uses-permission>elemento. Por lo tanto, verifique en su AndroidManifest.xmlarchivo lo mismo.

La versión de Android Studio es 3.0.1

El sistema operativo es Windows 7

Aquí está la captura de pantalla para referencia.

Captura de pantalla que muestra redundancia en el archivo de manifiesto.

Parth Patel
fuente
Si bien esto se publicó antes de la respuesta de @ CLIFFORD-PY, encontrar errores de fusión a través de la vista Manifiesto fusionado detectará este error redundante en particular.
sonyisda1
8

Resolví esto con Refactor -> Migrar a AndroidX

GL

Braian Coronel
fuente
7

Por lo general, ocurre cuando tiene errores en su manifiesto. Abra AndroidManifest.xml. Haga clic en la pestaña de manifiesto combinado. Los errores se pueden ver allí. También incluya sugerencias mencionadas allí. Cuando tuve un problema similar al importar com.google.android.gms .maps.model.LatLng, me sugirió incluir herramientas: overrideLibrary = "com.google.android.gms.maps" en la etiqueta de la aplicación y la compilación fue exitosa.

Archana Prabhu
fuente
3

Mi caso lo he arreglado

build.gradle (Módulo: aplicación)

defaultConfig {
----------
multiDexEnabled true
}
dependencies {
    ...........
    implementation 'com.google.android.gms:play-services-gcm:11.0.2'
    implementation 'com.onesignal:OneSignal:3.+@aar'
    }

Esta respuesta se envió a la notificación push de OnSignal

MD Shofiulla
fuente
2
  1. En AndroidManifest.xml:

    • En la aplicación, agregue tools:replace="android:icon, android:themey
    • En la raíz del Manifiesto, agregue xmlns:tools="http://schemas.android.com/tools
  2. En build.gradle:

    • En la raíz, agregue useOldManifestMerger true
ao wu
fuente
2

La versión minium sdk debe ser la misma que la de los módulos / lib que está utilizando. Por ejemplo: la versión min sdk de su módulo es 26 y la versión min sdk de su aplicación es 21 Debe ser la misma.

Ejaz Ahmad
fuente
1

Durante los últimos días también estaba pasando por el mismo problema. Pero después de mucha investigación finalmente encontré una solución para esto.
Para resolver este problema, lo que hay que hacer es:
1. Compruebe si su proyecto de build.gradle archivo y del módulo build.gradle archivo contienen mismas versiones de todas las dependencias.
2. Asegúrese de que compileSdkVersion , buildToolsVersion , minSdkVersion y targetSdkVersion de su proyecto coincidan con el de los módulos o bibliotecas que ha agregado al proyecto.

compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.appname"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 22
    versionName "2.0.3"

}

Espero que esto ayude.

Rahul Deep Singh
fuente
1

Si después de agregar un módulo de biblioteca de Android y obtiene este error.
Se puede arreglar por simple quitar el android:label="@string/app_name"de la AndroidManifest.xmlde su módulo Biblioteca Android

Phan Van Linh
fuente
1

Abra su consola Gradle, luego verá que Gradle le sugiere agregar la línea particular (como: herramientas: reemplazar = "android: allowBackup" o herramientas: reemplazar = "android: etiqueta", etc.). Agregue esa línea en su archivo de manifiesto bajo la etiqueta y sincronice gradle, eso es todo.

Nazmus Saadat
fuente
1

En mi caso, sucedió por dejar un filtro de intención vacío dentro de la etiqueta Actividad

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

            <intent-filter>

            </intent-filter>

    </activity> 

Así que solo eliminarlos resolvió el problema.

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
    </activity> 
Dr. TJ
fuente
0

Como novato en Android Studio, en mi caso, había movido un proyecto existente de Eclipse a Android Studio y descubrí que había una definición duplicada de una actividad dentro de mi Manifest.xml que Eclipse no había recogido. Un error de Gradle.

Encontré esto yendo a la consola de Gradle (abajo a la derecha de la pantalla).

JanB
fuente
0

Sucedió conmigo dos veces cuando refractaria (Cambiar nombre con MAYÚS + F6) el nombre de un campo en nuestros archivos y le pide que lo cambie en todas partes y nosotros, sin prestar atención, cambiamos el nombre en todas partes. Por ejemplo, si tiene un nombre de variable "id" en su clase Java y lo renombra con SHIFT + F6. Si no presta atención al siguiente cuadro de diálogo que le preguntará dónde va a cambiar la identificación y marque la casilla de verificación, todo cambiará la identificación en sus archivos de diseño desde el nuevo valor.

Rakesh Yadav
fuente
0

esto es un error muy simple que solo ocurre cuando define una llamada de actividad dos veces en el archivo mainifest.xml Ejemplo como

<activity android:name="com.futuretech.mpboardexam.Game" ></activity>

//and launcher also------like that



//solution:use only one 
Lalit Baghel
fuente
0

Ponga esto al final de su módulo de aplicación build.gradle:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.0'
        }
    }
}}

de esto

SOMBRA RED
fuente
0

Complemente la respuesta Phan Van Linh. Eliminé estas líneas:

  android:icon="@mipmap/ic_launcher"
  android:label="name"
Guarida
fuente
0

Simplemente migre a Androidx como se muestra arriba y luego configure la versión mínima de SDK en 26 ... sin dudas, esto funciona perfectamente

sammy mutahi
fuente
0

El siguiente truco funciona:

  1. Agregue la xmlns:tools="http://schemas.android.com/tools"línea en la etiqueta de manifiesto
  2. Agregar tools:replace="android:icon,android:theme,android:allowBackup,label,name" en la etiqueta de la aplicación
Shoaib Ahmed
fuente
0

Resolví esto eliminando la android:replaceetiqueta

Gurjap singh
fuente
0

En mi caso, estaba usando algunas anotaciones de la biblioteca jetbrains. Eliminé esas anotaciones y dependencias y funcionó bien.

Por lo tanto, compruebe cuidadosamente las bibliotecas en el código y las dependencias de Android.

Chaman Gurjar
fuente
0

Si está utilizando varios manifestPlaceholderelementos en subuild.gradle archivo, debe agregarlos como elementos de matriz, en lugar de elementos separados.

Por ejemplo, esto provocará un error de compilación o error de compilación: "java.lang.RuntimeException: la fusión del manifiesto falló con varios errores":

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1"]
        manifestPlaceholders = [myKey2: "myValue2"] // Error!
    }
}

Esto solucionará el error:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}
Mr-IDE
fuente
0

Esto se debe a que está utilizando la nueva biblioteca de materiales con la biblioteca de soporte heredada.

Tienes que migrar android.supporta androidxpara poder usar com.google.android.material.

Si está utilizando Android Studio v 3.2 o superior, simplemente

ir al refactorizador ---> MIGRAR AL ANDROID X.

Haga una copia de seguridad de su proyecto.

Fazal Jarral
fuente
0

Estaba usando FirebaseUI Libraryjunto con el Facebook SDK Library, lo que me estaba causando el problema.

implementation 'com.firebaseui:firebase-ui-database:0.4.4'
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

Y desde [aquí] [1], me libré de este problema.

Con la bibliotecalatest update de FirebaseUI , la versión anterior de Facebook SDK también forma parte de ella.

Si está utilizando ambas bibliotecas, elimine la biblioteca del SDK de Facebook .

https://github.com/firebase/FirebaseUI-Android/issues/230

ACTUALIZAR

A partir de las Android Studio 3.0versiones y posteriores, app.gradlese requiere el archivo para usar implementationo en apilugar de compileagregar las dependencias a la aplicación.

Mohammedsalim Shivani
fuente
0

Después de ver la respuesta de CLIFFORD para ver el error, lo que me ayudó a resolver este problema fue renombrar 'android: namex' a 'android: name' en la etiqueta de acción de filtro de intención. En caso de que la misma solución ayude a alguien más.

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:namex="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Farhan
fuente