La fusion manifeste a échoué avec plusieurs erreurs dans Android Studio


250

Je suis donc un débutant sur Android et Java. J'ai juste commencé à apprendre. Pendant que j'expérimentais Intent aujourd'hui, j'ai rencontré une erreur.

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

J'ai trouvé quelques solutions ici et j'ai essayé de les mettre en œuvre, mais cela n'a pas fonctionné.

Voici mon 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'
}

Voici mon 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>

C'est ma première semaine avec le codage, je suis désolé si c'est une chose vraiment stupide. Je suis vraiment nouveau dans ce domaine et je n'ai trouvé aucun autre endroit à demander. Désolé si j'ai enfreint des règles


2
supprimer la ligne <activity android: name = ". MainActivity" /> dans votre fichier menifest.xml
Pankaj Talaviya

10
Pour des informations détaillées sur l'erreur, vous pouvez vérifier la console Gradle dans Android Studio dans le coin inférieur droit.
DragonT

J'espère que ce lien vous sera utile.
Mortreza AD

J'ai eu la même erreur, mais je l'ai résolu en conservant le même SDK minimum dans le projet et la bibliothèque.
Raja Jawahar

youtu.be/K88WaSm3q8Y "La fusion manifeste a échoué avec plusieurs erreurs dans Android Studio"?
Roman Pokrovskij

Réponses:


966

Ouvrez le manifeste d'application ( AndroidManifest.xml) et cliquez sur Merged Manifest. Vérifiez l'image ci-dessous:

android-manifest-merge-feature

De l'image, vous pouvez voir Erreur dans la colonne de droite, essayez de résoudre l'erreur. Cela peut aider quelqu'un avec le même problème. Lisez plus ici .


5
brillant ... ne trouve pas de mots pour exprimer mon merci
Shahzad Afridi

2
dans mon cas, je l'ai fait défiler un peu pour voir les erreurs
CodeToLife

Malheureusement, il n'y a pas d'onglet "Manifeste fusionné" dans Android Studio 3.5.2.
FractalBob

@FractalBob J'exécute la version 3.5.2 et je vois l'onglet "Manifeste fusionné". Vous avez peut-être une autre erreur qui se produit avant la fusion des manifestes.
sonyisda1

@ sonyisda1 Vous exécutez dans un environnement Linux? J'ai Ubuntu 18.04 LTS.
FractalBob

120

Supprimez <activity android:name=".MainActivity"/>de votre fichier mainfest. Comme vous l'avez déjà défini comme:

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

Donc, fichier manifeste montrant une ambiguïté.


31
Il est dommage que ce soit la réponse acceptée, alors qu'elle ne corrige que le code de Rowen mais est totalement inutile pour quiconque. La réponse de CLIFFORD vous montre en fait comment "voir les journaux" comme le suggère le message d'erreur.
Andrew Koster

Cela fonctionne très bien, vérifiez et supprimez toute entrée en double dans le fichier AndroidManifest.xml.
vishwajit76

61

Pour moi, cela fonctionne -

Recherche des erreurs de fusion dans AndroidManifest.xml

entrez la description de l'image ici

Cliquez sur Manifesté fusionné dans AndroidManifest.xml

entrez la description de l'image ici

Vous pouvez afficher l'erreur de fusion manifeste dans la colonne de droite. Cela peut aider à résoudre ce problème.


3
Il s'agit d'un correctif générique pour ce problème. Cela vous aide à trouver la vraie raison de tout problème à ce sujet.
JoeGalind

60

J'étais également confronté aux mêmes problèmes, et après de nombreuses recherches, j'ai trouvé la solution:

  1. Votre version min sdk doit être la même que celle des modules que vous utilisez, par exemple: votre module min sdk version est 14 et votre application min sdk version est 9 Elle devrait être la même.
  2. Si la version de construction de votre application et de vos modules n'est pas la même. Encore une fois, il devrait être le même ** En bref, votre build.gradlefichier d' application et votre manifeste doivent avoir les mêmes configurations **
  3. Il n'y a pas de duplication comme les mêmes autorisations ajoutées deux fois dans le fichier manifeste, la même mention d'activité deux fois.
  4. Si vous avez supprimé une activité de votre projet, supprimez-la également de votre fichier manifeste.
  5. Parfois, c'est à cause de l'étiquette, de l'icône, etc. de la balise du fichier manifeste:

a) Ajoutez la xmlns:toolsligne dans la balise manifest.

b) Ajoutez tools:replace=ou tools:ignore=dans la balise d'application.

Exemple:

<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 deux dépendances ne sont pas du même exemple de version: vous utilisez des dépendances pour appcompat v7: 26.0.0 et pour facebook com.facebook.android:facebook-android-sdk:[4,5) facebook utilise cardview de la version com.android. support: cardview-v7: 25.3.1 et appcompat v7: 26.0.0 utilise cardview de la version v7: 26.0.0, donc il y a de la discordance dans deux bibliothèques et donne donc une erreur

Erreur: l'exécution a échoué pour la tâche ': app: processDebugManifest'.

Échec de la fusion du manifeste: méta-données d'attribut#android.support.VERSION@value value = (26.0.0-alpha1) de [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 est également présent à [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1). Suggestion: ajoutez 'tools: replace = "android: value"' à l'élément sur AndroidManifest.xml: 25: 5-27: 41 pour remplacer.

Donc, en utilisant appcompat de la version 25.3.1, nous pouvons éviter cette erreur

En considérant les points ci-dessus à l'esprit, vous vous débarrasserez de ce problème irritant. Vous pouvez également consulter mon blog https://wordpress.com/post/dhingrakimmi.wordpress.com/23


1
dans mon cas, c'était dû au thème du module que j'ai ajouté, j'ai donc utilisé comme outils: remplacer "icône, étiquette, thème"
turbandroid

dans mon cas, c'était dû au thème du module que j'ai ajouté, j'ai donc utilisé comme outils: remplacer "icône, étiquette, thème" et xmlns: tools = " schemas.android.com/tools ". merci @ O'one
alfo888_ibg

14

Outre les solutions disponibles, veuillez également les vérifier.
Si vous l'avez défini android:allowBackup="false"dans votre, AndroidManifest.xmlil peut y avoir un conflit android:allowBackup="true"dans d'autres dépendances.

Solution
Comme suggéré par @CLIFFORD PY, basculez vers Merged Manifestdans votre AndroidManifest.xml. Android Studio propose d'ajouter tools:replace="android:allowBackup"à <application />votre AndroidManifest.xml.


12

J'étais confronté au même problème et je viens d'ajouter une ligne dans mon manifest.xml et cela a fonctionné pour moi.

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

ajouter cette ligne sous

<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">

J'espère que cela vous aidera.


Merci beaucoup! J'étais confronté à ce problème dans un scénario très spécifique provoqué par la page de support Zendesk, en cliquant sur "joindre un fichier". J'ai essayé tant de réponses de différentes questions et seul votre commentaire a aidé!
Natalie

@Natalie, je suis content que cela ait aidé :)
Pre_hacker

11

Ajoutez simplement le code ci-dessous dans la balise d'application Manifest de votre projet ...

<application
        tools:node="replace">

Merci beaucoup
tej shah

8

Dans mon cas, il montrait une erreur car il y avait une redondance dans l' <uses-permission>élément. Veuillez donc vérifier votreAndroidManifest.xml fichier pour la même chose.

La version d'Android Studio est 3.0.1

Le système d'exploitation est Windows 7

Voici la capture d'écran pour référence.

Capture d'écran qui montre la redondance dans le fichier manifeste.


Bien que cela ait été publié avant la réponse de @ CLIFFORD-PY, la recherche d'erreurs de fusion via la vue du manifeste fusionné corrigera cette erreur redondante particulière.
sonyisda1


7

Se produit généralement lorsque vous avez des erreurs dans votre manifeste.Ouvrez AndroidManifest.xml .Cliquez sur l'onglet du manifeste fusionné.Les erreurs peuvent y être affichées.Incluez également les suggestions mentionnées ici.Lorsque j'ai rencontré un problème similaire lors de l'importation de com.google.android.gms .maps.model.LatLng, il m'a suggéré d'inclure des outils: overrideLibrary = "com.google.android.gms.maps" dans la balise d'application et la construction a réussi.


3

Mon cas, je l'ai réparé par

build.gradle (Module: application)

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

Cette réponse reliée à la notification push OnSignal


2
  1. Dans AndroidManifest.xml:

    • À l'application, ajoutez tools:replace="android:icon, android:theme et
    • À la racine du manifeste, ajoutez xmlns:tools="http://schemas.android.com/tools
  2. Dans build.gradle:

    • À la racine, ajoutez useOldManifestMerger true

2

La version minium sdk doit être la même que celle des modules / lib que vous utilisez. Par exemple: votre module min sdk version est 26 et votre application min sdk version est 21. Elle devrait être la même.


1

au cours des derniers jours, je vivais également le même problème. Mais après de nombreuses recherches, j'ai finalement trouvé une solution à cela.
Pour résoudre ce problème, ce que vous devez faire est:
1. Vérifiez si votre projet build.gradle fichier et du module build.gradle fichier contiennent mêmes versions de toutes les dépendances.
2. Assurez-vous que compileSdkVersion , buildToolsVersion , minSdkVersion et targetSdkVersion de votre projet correspondent à celui des modules ou bibliothèques que vous avez ajoutés au projet.

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

}

J'espère que cela t'aides.


1

Si après avoir ajouté un module de bibliothèque Android et vous obtenez cette erreur.
Vous pouvez le corriger en supprimant simplement android:label="@string/app_name"le AndroidManifest.xmlde votre module de bibliothèque Android


1

Ouvrez votre console Gradle, puis vous voyez Gradle vous suggérer d'ajouter la ligne particulière (comme: tools: replace = "android: allowBackup" ou tools: replace = "android: label" etc). Ajoutez cette ligne dans votre fichier manifeste sous tag et synchronisez gradle, c'est tout.


1

Dans mon cas, c'est arrivé pour avoir laissé un filtre d'intention vide à l'intérieur de la balise Activity

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

            <intent-filter>

            </intent-filter>

    </activity> 

Le simple fait de les supprimer a résolu le problème.

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

0

En tant que débutant à Android Studio, dans mon cas, j'avais déplacé un projet existant d'Eclipse vers Android Studio et constaté qu'il y avait une définition en double d'une activité dans mon Manifest.xml qui n'avait pas été récupérée par Eclipse était affichée comme une erreur Gradle.

J'ai trouvé cela en allant dans la console Gradle (en bas à droite de l'écran).


0

Je suis arrivé deux fois avec moi quand je réfracteur (Renommer avec SHIFT + F6) le nom d'un champ dans nos fichiers et il vous demande de le changer partout et nous sans faire attention changer le nom partout. Par exemple, si vous avez un nom de variable "id" dans votre classe Java et que vous le renommez avec SHIFT + F6. Si vous ne faites pas attention à la boîte de dialogue suivante qui vous demandera où elle va changer l'identifiant et si vous cochez la case tout cocher, tout l'identifiant dans vos fichiers de mise en page changera à partir de la nouvelle valeur.


0

c'est une erreur très simple qui ne se produit que lorsque vous définissez un appel d'activité deux fois dans le fichier mainifest.xml Exemple comme

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

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



//solution:use only one 

0

Mettez ceci à la fin de votre module d'application 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 cela


0

Complétez la réponse Phan Van Linh. J'ai supprimé ces lignes:

  android:icon="@mipmap/ic_launcher"
  android:label="name"

0

Migrez simplement vers Androidx comme indiqué ci-dessus, puis définissez la version minimale du SDK sur 26 ... sans aucun doute, cela fonctionne parfaitement


0

Le hack suivant fonctionne:

  1. Ajoutez la xmlns:tools="http://schemas.android.com/tools"ligne dans la balise manifest
  2. Ajouter tools:replace="android:icon,android:theme,android:allowBackup,label,name" dans la balise d'application


0

Dans mon cas, j'utilisais des annotations de la bibliothèque Jetbrains. J'ai supprimé ces annotations et dépendances et cela a bien fonctionné.

Veuillez donc vérifier attentivement les bibliothèques dans le code Android et les dépendances.


0

Si vous utilisez plusieurs manifestPlaceholderéléments dans votrebuild.gradle fichier, vous devez les ajouter en tant qu'éléments de tableau, au lieu d'éléments distincts.

Par exemple, cela entraînera une erreur de génération ou une erreur de compilation: "java.lang.RuntimeException: la fusion du manifeste a échoué avec plusieurs erreurs":

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

Cela corrigera l'erreur:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}

0

En effet, vous utilisez la nouvelle bibliothèque de matériaux avec la bibliothèque de support héritée.

Vous devez migrer android.supportvers androidxpour utiliser com.google.android.material.

Si vous utilisez Android Studio v 3.2 ou supérieur, il vous suffit de

allez chez refactor ---> MIGRATE TO ANDROID X.

Faites une sauvegarde de votre projet.


0

J'utilisais le FirebaseUI Libraryavec le Facebook SDK Library, ce qui me posait le problème.

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

Et de [ici] [1], je me suis débarrassé de ce problème.

Avec la latest updatede bibliothèque FirebaseUI , version précédente du SDK Facebook est également une partie de celui - ci.

Si vous utilisez les deux bibliothèques, veuillez supprimer la bibliothèque du SDK Facebook .

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

METTRE À JOUR

À partir de la version Android Studio 3.0et des versions ultérieures, le app.gradlefichier doit utiliser implementationou apiau lieu de compilepour ajouter les dépendances à l'application.


0

Après avoir vu la réponse de CLIFFORD pour voir l'erreur, ce qui m'a aidé à résoudre ce problème a été de renommer 'android: namex' en 'android: name' dans la balise d'action intention-filter. Au cas où la même solution aiderait quelqu'un d'autre.

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.