Erreur d'icône Gradle du studio Android, fusion du manifeste


141

Je continue à voir ce message et je ne sais pas comment le résoudre pour de bon.

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

android:replace="android:icon"J'ai essayé d'ajouter à mon manifeste même avec mon icône.

J'ai essayé de supprimer le android:icon="@drawable/ic_launcherde la bibliothèque mais il revient quand je construis parce qu'il est importé de maven

Des idées ?


Ce problème se produit en cas de problème dans les balises de fichier manifeste. Veuillez vérifier la réponse stackoverflow.com/a/39509659/2732632
Kimmi Dhingra

J'ai rencontré le même problème lorsque j'ai ajouté des autorisations en double dans le manifeste.
Cloy

Réponses:


342

Cela semble être la faute de l'outil Mainfest Merger pour Gradle.

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

Résolu le problème en ajoutant à ma balise manifeste xmlns:tools="http://schemas.android.com/tools"

Puis ajouté tools:replace="android:icon,android:theme"à la balise d'application

Cela indique à la fusion d'utiliser mon icône et mon thème manifestes et non d'autres bibliothèques

J'espère que ça aide merci


6
Le problème persiste encore pour moi. Travailler dans Android Studio 1.1.
Bolling le

1
Merci! A travaillé pour moi
Sandeep

4
Dernières versions d'Android 2.0. Ca ne fonctionne pas. Celui qui a répondu devrait mettre à jour ce Q s'il voulait dire sauver des générations, sinon il sera bientôt inutile
Karue Benson Karue

3
Studio 2.2 à partir d'aujourd'hui tous ayant cela et ne fonctionnant pas ce problème
Prasad

2
ne fonctionne pas pour Android Studio 2.2 avec gradle 2.2.0.
DysaniazzZ

54

J'ai le même problème, je le corrige comme ça en ajoutant xmlns:tools="http://schemas.android.com/tools"en haut du fichier mainfest et en ajoutant tools:replace="android:icon"pour ressembler à

<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
ne fonctionne pas pour Android Studio 2.2 et gradle 2.2.0.
DysaniazzZ

réponse brillante
Gundu Bandgar

10

J'ai la même erreur, juste ce code résout mon problème, je veux partager avec vous:

dans Manifest.xml:

  • ajoutez ce code en haut de votre fichier xml:

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

  • Puis ajouté:

    tools:replace="android:icon,android:theme,android:label,android:name" à la balise d'application


@DysaniazzZ, cela ne dépend pas d'Android Studio. voir le journal des messages.
Adnan Abdollah Zaki

D'accord, je vais voir.
DysaniazzZ

@Funwise, vérifiez votre journal de messages, je pense que cela ne dépend pas du studio Android.
Adnan Abdollah Zaki

@ adnan9011, mon problème était d'avoir des autorisations en double dans le fichier Manifest.
Darush

9

La réponse de shimi_tap est suffisante. Ce qu'il faut retenir, c'est de ne choisir que ce dont vous avez besoin. Choisissez parmi {icon, name, theme, label}. J'ai ajouté tools:replace="android:icon,android:theme", cela ne fonctionne pas. J'ai ajouté tools:replace="android:icon,android:theme,android:label,android:name", cela ne fonctionne pas. Cela fonctionne quand j'ai ajouté tools:replace="android:icon,android:theme,android:label". Découvrez donc quel est exactement le conflit dans vos fichiers manifestes.


1
ne fonctionne pas pour Android Studio 2.2 et gradle 2.2.0.
DysaniazzZ

5

Ajoutez simplement xmlns:tools="http://schemas.android.com/tools"à votre balise manifeste, puis vous devez ajouter tools:replace="android:icon" avant android:icon="@mipmap/ic_launcher" .


3

Cette erreur se produit également lorsque le minSdk de votre application est supérieur au minSdk de n'importe quelle bibliothèque.

app's minSdk >= libraries minSdk

1
Alors, quelle est la solution?
itzhar

2

OBTENEZ LA SOLUTION APRÈS BEAUCOUP DE TEMPS GOOGLING

il suffit de récupérer votre ic_launcher et de le coller dans votre dossier drawables,

Accédez à votre manifeste et changez android: icon = "@ drawable / ic_launcher"

Nettoyez votre projet et reconstruisez

J'espère que ça vous aide


2

J'ai eu ce problème en changeant l'icône de drawable en mipmap.

Je n'ai raté que la ligne

tools:replace="android:icon"

dans le manifeste.


1

Pour une raison quelconque, le studio Android n'aime pas appeler l'icône de l'application à partir du dossier pouvant être dessiné. Donc, dans ce cas, j'ai créé le répertoire de ressources mipmap sous le dossier res.

Cliquez avec le bouton droit sur le dossier res> nouveau> répertoire de ressources android> type de ressource: mipmap et déposez maintenant n'importe quelle icône, puis référencez-la dans le fichier manifeste. Partager cela puisque cette méthode a fonctionné pour moi.

android: icône: @ drawable / ic_launcher "

à

android: icon = "@ mipmap / ic_launcher"


pour moi, définir le style me semblait le mieux android:theme="@style/AppTheme" voir -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS

1

Si rien de tout cela ne fonctionne, fermez Android Studio. Allez sur app / src / main, ouvrez le fichier AndroidManifest.xml dans un éditeur de texte (comme sublime), supprimez / remplacez les lignes d'erreurs, enregistrez et rouvrez android studio.


1

Lorsqu'une valeur d'attribut contient un espace réservé (voir le format ci-dessous), la fusion du manifeste échangera cette valeur d'espace réservé avec une valeur injectée. Les valeurs injectées sont spécifiées dans build.gradle. La syntaxe des valeurs d'espace réservé est $ {name} puisque @ est réservé aux liens. Après la dernière fusion de fichiers et avant l'écriture du fichier manifeste Android fusionné résultant, toutes les valeurs avec un espace réservé seront échangées avec les valeurs injectées. Une rupture de construction sera générée si un nom de variable est inconnu.

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


0

La réponse de Shimi_tap est la bonne façon de résoudre le problème. Si vous souhaitez utiliser l'ancien outil de fusion, vous pouvez l'ajouter au fichier build.gradle

android {useOldManifestMerger true}


2
"Dans la version 1.0, nous avons supprimé la possibilité d'invoquer l'ancienne fusion manifeste. .." tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg

Impossible de trouver la méthode useOldManifestMerger () pour les arguments [true] sur le projet ': app' de type org.gradle.api.Project.
DysaniazzZ

0

Pour moi, ce problème s'est produit après la mise à jour des services Google Play. L'une des bibliothèques que j'utilisais incorporait cette bibliothèque en utilisant le "+" dans sa référence gradel, comme

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

Cela a créé un problème car la version minimale ciblée par cette bibliothèque était inférieure à celle ciblée par la version actuelle des services Google Play. J'ai trouvé cela en regardant simplement dans les journaux.


0

Dans votre .gradlechangement MinSDK, par exemple:

  • build.gradle (Module: application)
    • avant: minSdkVersion 9
    • après: minSdkVersion 14

etc.


0

J'ai essayé toutes les solutions mentionnées ci-dessus

dans Manifest.xml:

  • ajoutez ce code en haut de votre fichier xml dans la balise manifest:

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

  • Puis ajouté:

    tools:replace="android:icon,android:theme,android:label,android:name" à la balise d'application

mais rien de tout cela n'a fonctionné. J'avais besoin de supprimer un fichier xml qui se trouvait dans

mipmap-anydpi-v26 / ic_launcher_round.xml

Je testais l'application dans

Samsung Galaxy 8 avec OS version 8.0.0

est-ce vraiment une solution?


0

Dans le fichier AndroidManifest.xml, ajoutez ce qui suit au applicationnœud:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
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.