web-dev-qa-db-fra.com

La fusion de manifestes a échoué avec plusieurs erreurs dans Android Studio

Donc, je suis un débutant dans Android et Java. J'ai juste commencé à apprendre. Pendant que je testais Intent aujourd'hui, j'ai commis une erreur.

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

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

Ceci est 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'
}

Ceci est 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 où poser des questions. Désolé si j'ai enfreint les règles

131
this.rowen

Supprimez <activity Android:name=".MainActivity"/> de votre fichier manifeste. 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 l'ambiguïté.

103
Android Geek

Ouvrez le manifeste de l'application (AndroidManifest.xml), cliquez sur Merged Manifest. Vérifier l'image

 enter image description here

Vous pouvez voir l'erreur dans la colonne de droite, essayez de résoudre l'erreur.Il peut aider quelqu'un avec le même problème.Lire plus de ici

484
CLIFFORD P Y

Je faisais également face aux mêmes problèmes et, après de nombreuses recherches, j'ai trouvé la solution:

  1. Votre version de sdk min doit être identique à celle des modules que vous utilisez, par exemple: votre version de sdk min du module est 14 et votre version de sdk min de l'application est 9 Elle devrait être identique.
  2. Si la version de construction de votre application et les modules ne sont pas identiques. Encore une fois, cela devrait être pareil ** En bref, le fichier et le manifeste de votre application build.gradle devraient 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 activité mentionnée 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., du fichier manifeste:

a) Ajoutez la ligne xmlns:tools dans la balise manifeste.

b) Ajoutez tools:replace= ou tools:ignore= dans la balise de l'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 n’ont pas la même version exemple: vous utilisez la dépendance 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, il existe donc un désordre dans deux bibliothèques et donne donc une erreur

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

La fusion du manifeste a échoué: Attribut meta-data#Android.support.VERSION@value value = (26.0.0-alpha1) from [com.Android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 est également présent sur [com.Android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 valeur = (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 tenant compte des points ci-dessus, vous vous débarrasserez de ce problème irritant .. Vous pouvez également consulter mon blog https://wordpress.com/post/dhingrakimmi.wordpress.com/23

52
Kimmi Dhingra

Pour moi ça marche - 

Recherche d'erreurs de fusion dans AndroidManifest.xml 

 enter image description here

Cliquez sur Manifest fusionné dans AndroidManifest.xml

 enter image description here

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

40
Anirban

Je faisais face au même problème et je viens d'ajouter une ligne dans mon fichier manifest.xml et cela a fonctionné pour moi.

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

ajoutez 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 ça va aider.

11
Pre_hacker

En plus des solutions disponibles, cochez cette case également.
Si vous avez défini Android:allowBackup="false" dans votre AndroidManifest.xml, il peut exister un conflit pour Android:allowBackup="true" dans d'autres dépendances.

Solution
Comme suggéré par @CLIFFORD P Y, passez à Merged Manifest dans votre AndroidManifest.xml. Android Studio suggérera d'ajouter tools:replace="Android:allowBackup" dans <application /> dans votre AndroidManifest.xml.

9
Chintan Shah

Dans mon cas, il y avait une erreur parce qu'il y avait une redondance dans l'élément <uses-permission> . Alors, veuillez vérifier votre fichier AndroidManifest.xml pour le même.

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.

 Screen-shot which shows redundancy in manifest file.

7
Parth Patel

Cela 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 être consultées à cet endroit. Vous pouvez également inclure les suggestions mentionnées à cet endroit. .maps.model.LatLng, il m'a suggéré d'inclure les outils: overrideLibrary = "com.google.Android.gms.maps" dans la balise de l'application et la génération a abouti.

6
Archana Prabhu

J'ai résolu ce problème avec Refactor -> Migrate to AndroidX

GL

4
CORONEL Braian

Mon cas je l'ai résolu par

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

Cette réponse concerne la notification OneSignal Push

This answer releted to OnSignal Push notification

3
Md. Shofiulla

Il suffit d’ajouter le code ci-dessous dans la balise d’application du manifeste de votre projet ...

<application
        tools:node="replace">
1
sankalp
  1. Dans AndroidManifest.xml:

    • À la demande, 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
1
ao wu

Si, après avoir ajouté un Android Library Module et que vous obtenez cette erreur.
Vous pouvez le réparer en supprimant simplement le Android:label="@string/app_name" du AndroidManifest.xml de votre Module Bibliothèque Android

1
Linh

Dans mon cas, cela est arrivé pour avoir laissé du intent-filter vide dans la balise Activity

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

            <intent-filter>

            </intent-filter>

    </activity> 

Il suffit donc de les supprimer pour résoudre le problème.

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

Ouvrez votre console Gradle, puis vous verrez gradle vous suggérer d’ajouter la ligne particulière (type d'outils: remplacer: "Android: allowBackup" ou outils: remplacer: "Android: étiquette", etc.). Ajoutez cette ligne dans votre fichier manifeste sous tag and sync gradle, c'est tout. 

1
Nazmus Saadat

ces derniers jours, je traversais également le même problème. Mais après de nombreuses recherches, j'ai finalement trouvé une solution pour cela .
Pour résoudre ce problème, vous devez procéder comme suit:
1. Vérifiez si le fichier build.gradle de votre projet et le fichier build.gradle du module contiennent les mêmes versions de toutes les dépendances .
2. Assurez-vous que compileSdkVersion , buildToolsVersion , minSdkVersion et targetSdkVersion de votre projet correspond à celui des modules ou bibliothèques que vous avez ajoutés. dans le 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
Rahul Deep Singh

Le hack suivant fonctionne:

  1. Ajouter la ligne xmlns:tools="http://schemas.Android.com/tools" dans la balise manifeste
  2. Ajouter tools:replace="Android:icon,Android:theme,Android:allowBackup,label,name" dans la balise d'application
0
Shoaib Ahmed

cette erreur très simple ne survient que lorsque vous définissez un appel d'activité deux fois dans le fichier mainifest.xml.

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

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



//solution:use only one 
0
Lalit Baghel

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 les bibliothèques dans le code Android et les dépendances avec soin.

0
Chaman Gurjar

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

Vous devez migrer Android.support vers androidx pour pouvoir utiliser com.google.Android.material.

Si vous utilisez Android studio v 3.2 ou version ultérieure, il vous suffit de

accédez au refactor ---> MIGRATE TO Android X.

Faites une sauvegarde de votre projet.

0
Fazal Jarral

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

à partir de cela

0
SHADOW NET

J'utilisais le FirebaseUI Library avec le Facebook SDK Library, ce qui me causait le problème.

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

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

Avec la latest update de la bibliothèque FirebaseUI, la version précédente du SDK de Facebook en fait également partie.

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

0

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

0
sammy mutahi

J'ai résolu ce problème en supprimant la balise Android:replace

0
Gurjap singh

En tant que novice sur Android Studio, dans mon cas, j’avais déplacé un projet existant d’Eclipse vers Android Studio et constaté qu’il existait une définition dupliquée d’une activité dans mon fichier Manifest.xml qui n’avait pas été détectée par Eclipse. une erreur de Gradle.

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

0
JanB

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

Par exemple, cela provoquera une erreur de compilation 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
Mr-IDE

La version minimale de sdk doit être identique à celle des modules/lib que vous utilisez .____ Par exemple: votre version de sdk min du module est 26 et votre version de sdk min de l'application est 21 Elle devrait être identique.

0
Ejaz Ahmad

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

  Android:icon="@mipmap/ic_launcher"
  Android:label="name"
0
Den

Il m’est arrivé deux fois 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, changeons le nom partout . Par exemple, si vous avez un nom de variable "id" dans votre classe Java et 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, cela changera tout l'identifiant de vos fichiers de disposition à partir de la nouvelle valeur.

0
Rakesh Yadav

j'ai résolu ce problème en supprimant la ligne ci-dessous de AndroidManifest.xml

Android:allowBackup="true"
0
saigopi