Android studio Errore icona Gradle, Fusione manifest


141

Continuo a vedere questo messaggio e non sono sicuro di come risolverlo per sempre.

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"Ho provato ad aggiungere al mio manifest anche con la mia icona.

Ho provato a cancellare il android:icon="@drawable/ic_launcherdalla libreria ma continua a tornare quando lo costruisco perché è importato da Maven

Qualche idea ?


Questo problema si verifica quando si verifica un problema nei tag del file manifest. Si prega di controllare la risposta stackoverflow.com/a/39509659/2732632
Kimmi Dhingra,

Ho riscontrato lo stesso problema quando ho aggiunto autorizzazioni duplicate in manifest.
Cloy

Risposte:


342

Sembra essere colpa dello strumento di fusione principale per il grado.

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

Risolto aggiungendo al mio tag manifest xmlns:tools="http://schemas.android.com/tools"

Quindi aggiunto tools:replace="android:icon,android:theme"al tag dell'applicazione

Questo dice alla fusione di usare l'icona e il tema manifest e non di altre librerie

Spero che ti aiuti, grazie


6
Il problema persiste ancora per me. Lavorare in Android Studio 1.1.
Bolling

1
Grazie! Ha funzionato per me
Sandeep,

4
Ultime versioni di Android 2.0. non funziona. Chiunque abbia risposto dovrebbe aggiornare questo Q se intendesse salvare altre generazioni presto sarà inutile
Karue Benson Karue,

3
Studio 2.2 da oggi ha tutto questo e non funziona questo problema
Prasad,

2
non funziona per Android Studio 2.2 con Gradle 2.2.0.
DysaniazzZ,

54

Ho lo stesso problema, lo risolvo in questo modo aggiungendo xmlns:tools="http://schemas.android.com/tools"all'inizio del file mainfest e aggiungo tools:replace="android:icon"per apparire come

<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
non funziona per Android Studio 2.2 e Gradle 2.2.0.
DysaniazzZ,

risposta brillante
Gundu Bandgar,

10

ho lo stesso errore, solo questo codice risolve il mio problema, voglio condividere con te:

in Manifest.xml:

  • aggiungi questo codice all'inizio del tuo file xml:

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

  • Quindi aggiunto:

    tools:replace="android:icon,android:theme,android:label,android:name" al tag dell'applicazione


@DysaniazzZ, non dipende da Android Studio. vedere il registro dei messaggi.
Adnan Abdollah Zaki,

Va bene, vedrò.
DysaniazzZ,

@Funwise, controlla il registro dei messaggi, penso che non dipenda da Android Studio.
Adnan Abdollah Zaki,

@ adnan9011, il mio problema era avere autorizzazioni duplicate nel file manifest.
Darush,

9

La risposta di shimi_tap è sufficiente. Che cosa da ricordare è che scegliendo solo ciò di cui hai bisogno. Scegli tra {icona, nome, tema, etichetta}. Ho aggiunto tools:replace="android:icon,android:theme", non funziona. Ho aggiunto tools:replace="android:icon,android:theme,android:label,android:name", non funziona. Funziona quando l'ho aggiunto tools:replace="android:icon,android:theme,android:label". Quindi scopri qual è esattamente il conflitto nei tuoi file manifest.


1
non funziona per Android Studio 2.2 e Gradle 2.2.0.
DysaniazzZ,

5

Basta aggiungere xmlns:tools="http://schemas.android.com/tools"al tag manifest e quindi è necessario aggiungere tools:replace="android:icon" prima android:icon="@mipmap/ic_launcher" .


3

Questo errore si verifica anche quando minSdk dell'app è maggiore di minSdk di qualsiasi libreria.

app's minSdk >= libraries minSdk

1
quindi, qual è la soluzione?
Itzhar

2

OTTIENI LA ​​SOLUZIONE DOPO MOLTO TEMPO GOOGLING

prendi il tuo ic_launcher e incollalo nella cartella dei disegni,

Vai al tuo manifest e cambia Android: icon = "@ drawable / ic_launcher"

Pulisci il tuo progetto e ricostruiscilo

Spero che ti aiuti


2

Ho avuto questo problema cambiando l'icona da disegnabile a mipmap.

Ho perso solo la linea

tools:replace="android:icon"

nel manifest.


1

Per qualche ragione ad Android Studio non piace chiamare l'icona dell'app dalla cartella estraibile. Quindi in quel caso ho creato la directory delle risorse mipmap nella cartella res.

Fare clic con il pulsante destro del mouse sulla cartella res> nuova> directory delle risorse Android> tipo di risorsa: mipmap e ora rilasciare qualsiasi icona lì dentro quindi fare riferimento a quel file manifest. Condividendolo poiché questo metodo ha funzionato per me.

Android: Icona: @ drawable / ic_launcher"

per

Android: icon = "@ mipmap / ic_launcher"


per me l'impostazione dello stile mi è sembrata la migliore android:theme="@style/AppTheme" -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS

1

Se non funziona, chiudi Android Studio. Vai su app / src / main, apri il file AndroidManifest.xml in un editor di testo (come sublime), rimuovi / sostituisci le righe erros, salva e riapri Android Studio.


1

Quando un valore di attributo contiene un segnaposto (vedere il formato seguente), la fusione manifest cambierà questo valore di segnaposto con un valore iniettato. I valori iniettati sono specificati in build.gradle. La sintassi per i valori di segnaposto è $ {name} poiché @ è riservato per i collegamenti. Dopo che si è verificata l'ultima fusione del file e prima che venga scritto il file manifest Android risultante unito, tutti i valori con un segnaposto verranno scambiati con valori iniettati. Verrà generata un'interruzione della generazione se un nome di variabile è sconosciuto.

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


0

La risposta di Shimi_tap è il modo giusto per risolvere il problema. Se si desidera utilizzare il vecchio strumento di fusione, è possibile aggiungerlo al file build.gradle

android {useOldManifestMerger true}


2
"In 1.0, abbiamo rimosso la possibilità di invocare la vecchia fusione manifest. ..." tools.android.com/tech-docs/new-build-system/user-guide/…
devgrg

Impossibile trovare il metodo useOldManifestMerger () per gli argomenti [true] sul progetto ': app' di tipo org.gradle.api.Project.
DysaniazzZ,

0

Per me, questo problema si è verificato dopo l'aggiornamento di Google Play Services. Una delle librerie che stavo usando incorporava questa libreria usando il "+" nel suo riferimento gradel, come

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

Ciò ha creato un problema perché la versione minima scelta come target da quella libreria era inferiore a quella presa come target dalla versione corrente di Google Play Services. Ho trovato questo semplicemente guardando nei registri.


0

Nel tuo .gradlecambio MinSDK, ad esempio:

  • build.gradle (Modulo: app)
    • prima: minSdkVersion 9
    • dopo: minSdkVersion 14

eccetera.


0

Ho provato tutte le soluzioni sopra menzionate

in Manifest.xml:

  • aggiungi questo codice all'inizio del tuo file xml nel tag manifest:

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

  • Quindi aggiunto:

    tools:replace="android:icon,android:theme,android:label,android:name" al tag dell'applicazione

ma niente di tutto ha funzionato. Avevo bisogno di eliminare un file XML che si trovava in

mipmap-anydpi-V26 / ic_launcher_round.xml

Stavo testando l'applicazione in

Samsung Galaxy 8 con OS versione 8.0.0

è davvero una soluzione?


0

Nel file AndroidManifest.xml, aggiungi quanto segue al applicationnodo:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.