web-dev-qa-db-fra.com

Android studio Gradle icon error, fusion manifeste

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

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

J'ai essayé de supprimer le Android:icon="@drawable/ic_launcher de la bibliothèque, mais il revient toujours lorsque je le construit car il est importé de maven

Des idées ?

133
shimi_tap

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

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

Résolu 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 de manifeste et mon thème et non ceux d'autres bibliothèques. 

J'espère que ça aide merci

328
shimi_tap

J'ai le même problème, je le répare comme ceci 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>
50
Mina Fawzy

La réponse de shimi_tap suffit… .. Ce qu'il faut retenir, c'est de choisir uniquement ce dont vous avez besoin. Choisissez parmi {icône, nom, thème, étiquette} . 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". Recherchez donc le conflit dans vos fichiers de manifeste.

9
黄锐铭

Ajoutez simplement xmlns:tools="http://schemas.Android.com/tools" à votre balise de manifeste. Et puis vous devez ajouter tools:replace="Android:icon"_BEFORE_Android:icon="@mipmap/ic_launcher". Bonne chance! :RÉ

3
Ilya Cucumber

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

app's minSdk >= libraries minSdk
3
Hisham Muneer

OBTENU LA SOLUTION APRÈS BEAUCOUP DE TEMPS GOGLING

récupérez simplement votre ic_launcher et collez-le dans votre dossier drawables,

Allez dans votre manifeste et changez Android: icon = "@ drawable/ic_launcher"

Nettoyez votre projet et reconstruisez

J'espère que ça vous aide

2
Ismael ozil

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

J'ai seulement raté la ligne

tools:replace="Android:icon"

dans le manifeste.

2
Alecs

Pour une raison quelconque, Android studio n'aime pas appeler l'icône de l'application depuis un 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 de la souris sur le dossier res> nouveau> répertoire de ressources Android> type de ressource: mipmap et déposez-y une icône, puis faites-en référence dans le fichier manifeste. Partager cela depuis que cette méthode a fonctionné pour moi.

Android: icon: @ drawable/ic_launcher " 

à 

Android: icon = "@ mipmap/ic_launcher"

1
Alex

Si rien 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 des erreurs, enregistrez et rouvrez Android Studio.

1
Ricardo Mutti

Lorsqu'une valeur d'attribut contient un espace réservé (voir le format ci-dessous), le La fusion manifeste échangera cette valeur de substitution avec une valeur injectée valeur. Les valeurs injectées sont spécifiées dans le build.gradle. La syntaxe pour les valeurs d’espace réservé est $ {name} puisque @ est réservé aux liens. Après la dernière fusion de fichier a eu lieu et avant la fusion résultante Le fichier de manifeste Android est écrit, toutes les valeurs avec un espace réservé sera échangé avec les valeurs injectées. Un bris de construction sera généré si un nom de variable est inconnu.

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

1
Shixin Zhang

Dans votre .gradle, modifiez MinSDK, par exemple:

  • build.gradle (module: app)
    • avant: minSdkVersion 9
    • après: minSdkVersion 14 

etc.

0
Briliant Fay

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 }

0
San

dans Manifest.xml:

coplete tools: replace = "Android: appComponentFactory"> comme ceci

tools:replace="tools:replace="Android:appComponentFactory,Android:icon,Android:theme,Android:label,Android:name" to the application tag
0
Messou

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

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

Cela créait 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 simplement en regardant dans les journaux. 

0
Rarw