Fusione manifest non riuscita con più errori in Android Studio


250

Quindi, sono un principiante in Android e Java. Ho appena iniziato a studiare. Mentre stavo sperimentando Intent oggi, ho riscontrato un errore.

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

Ho trovato alcune soluzioni qui e ho cercato di implementarle, ma non ha funzionato.

Questo è il mio 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'
}

Questo è il mio 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>

Questa è la mia prima settimana con la programmazione, mi dispiace se questa è una cosa davvero sciocca. Sono davvero nuovo a questo e non ho trovato nessun altro posto dove chiedere. Scusa se ho infranto qualsiasi regola


2
rimuovi la riga <attività android: name = ". MainActivity" /> nel tuo file menifest.xml
Pankaj Talaviya,

10
Per informazioni dettagliate sull'errore è possibile controllare Gradle Console in Android Studio nell'angolo in basso a destra.
DragonT

Spero che questo link sia utile.
Mortreza AD

Ho avuto lo stesso errore, ma l'ho risolto mantenendo lo stesso SDK minimo nel progetto e nella libreria.
Raja Jawahar,

youtu.be/K88WaSm3q8Y "Fusione manifest non riuscita con errori multipli in Android Studio"?
Roman Pokrovskij,

Risposte:


965

Apri manifest ( AndroidManifest.xml) e fai clic su Merged Manifest. Controlla l'immagine qui sotto:

Android-manifesto-merge-funzione

Dall'immagine puoi vedere Errore nella colonna di destra, prova a risolvere l'errore. Potrebbe aiutare qualcuno con lo stesso problema. Leggi di più qui .


5
geniale ... non riesco a trovare le parole per esprimere il mio grazie
Shahzad Afridi,

2
nel mio caso l'ho fatto scorrere un po 'verso il basso per vedere gli errori
CodeToLife

Sfortunatamente, non esiste alcuna scheda "Manifest unito" in Android Studio 3.5.2.
FractalBob,

@FractalBob Sto eseguendo la 3.5.2 e vedo la scheda 'Manifest unito' ... forse hai qualche altro errore che si verifica prima che i manifest vengano uniti.
sonyisda1,

@ sonyisda1 Stai eseguendo in un ambiente Linux? Ho Ubuntu 18.04 LTS.
FractalBob,

120

Rimuovi <activity android:name=".MainActivity"/>dal tuo file mainfest. Come lo hai già definito come:

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

Quindi, il file manifest mostra ambiguità.


31
È un peccato che questa sia la risposta accettata, quando corregge solo il codice di Rowen ma è del tutto inutile per chiunque altro. La risposta di CLIFFORD in realtà mostra come "vedere i registri" come suggerisce il messaggio di errore.
Andrew Koster,

Funziona molto bene solo controllare e rimuovere qualsiasi voce duplicata nel file AndroidManifest.xml.
vishwajit76,

61

Per me QUESTO funziona -

Trovare errori di fusione in AndroidManifest.xml

inserisci qui la descrizione dell'immagine

Fai clic su Manifest unito in AndroidManifest.xml

inserisci qui la descrizione dell'immagine

È possibile visualizzare l'errore di unione manifest nella colonna di destra. Potrebbe aiutare a risolvere questo problema.


3
Questa è una soluzione generica per questo problema. Questo ti aiuta a trovare la vera ragione di qualsiasi problema al riguardo.
Joe Galind

60

Stavo anche affrontando gli stessi problemi e dopo molte ricerche ho trovato la soluzione:

  1. La tua versione minima di sdk dovrebbe essere uguale a quella dei moduli che stai usando, ad esempio: la tua versione minima di sdk del modulo è 14 e la tua versione minima di sdk dell'app è 9 Dovrebbe essere la stessa.
  2. Se la versione della tua app e dei moduli non è uguale. Anche in questo caso dovrebbe essere lo stesso ** In breve, il build.gradlefile dell'app e manifest dovrebbero avere le stesse configurazioni **
  3. Non ci sono duplicazioni come le stesse autorizzazioni aggiunte due volte nel file manifest, la stessa attività menzionata due volte.
  4. Se hai eliminato qualsiasi attività dal tuo progetto, eliminala anche dal tuo file manifest.
  5. A volte è a causa di etichetta, icona ecc. Tag del file manifest:

a) Aggiungi la xmlns:toolslinea nel tag manifest.

b) Aggiungi tools:replace=o tools:ignore=nel tag dell'applicazione.

Esempio:

<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. Se due dipendenze non sono dello stesso esempio di versione: stai usando la dipendenza per appcompat v7: 26.0.0 e per facebook com.facebook.android:facebook-android-sdk:[4,5) facebook utilizza cardview della versione com.android. supporto: cardview-v7: 25.3.1 e appcompat v7: 26.0.0 usa cardview della versione v7: 26.0.0, quindi c'è discrepanza in due librerie e quindi danno errore

Errore: esecuzione non riuscita per l'attività ': app: processDebugManifest'.

Fusione manifest non riuscita: attributo meta-data#android.support.VERSION@value value = (26.0.0-alpha1) da [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 è anche presente su [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 valore = (25.3.1). Suggerimento: aggiungi 'strumenti: sostituisci = "android: valore"' all'elemento su AndroidManifest.xml: 25: 5-27: 41 per sovrascrivere.

Quindi, utilizzando appcompat della versione 25.3.1, possiamo evitare questo errore

Considerando i punti di cui sopra, ti libererai di questo irritante problema. Puoi controllare anche il mio blog https://wordpress.com/post/dhingrakimmi.wordpress.com/23


1
nel mio caso era dovuto al tema del modulo che ho aggiunto e quindi ho usato come strumenti: sostituisci "icona, etichetta, tema"
turbandroid

nel mio caso era dovuto al tema del modulo che ho aggiunto, quindi ho usato come strumenti: sostituisci "icona, etichetta, tema" e xmlns: tools = " schemas.android.com/tools ". grazie @ O'one
alfo888_ibg

14

Oltre alle soluzioni disponibili, controlla anche questo.
Se hai impostato il android:allowBackup="false"tuo AndroidManifest.xmlallora potrebbe esserci un conflitto per android:allowBackup="true"altre dipendenze.

Soluzione
Come suggerito da @CLIFFORD PY, passare a Merged Manifestnel proprio AndroidManifest.xml. Android Studio suggerisce di aggiungere tools:replace="android:allowBackup"in <application />nel vostro AndroidManifest.xml.


12

Stavo affrontando lo stesso problema e ho appena aggiunto una riga nel mio manifest.xml e ha funzionato per me.

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

aggiungi questa riga sotto

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

Spero che possa essere d'aiuto.


grazie mille! Stavo affrontando questo problema in uno scenario molto specifico causato dalla pagina di supporto di Zendesk, facendo clic su "allega file". Ho provato tante risposte da diverse domande e solo il tuo commento è stato di aiuto!
Natalie,

@Natalie Sono contento che abbia aiutato :)
Pre_hacker,

11

Basta aggiungere il codice seguente nel tag dell'applicazione manifest del progetto ...

<application
        tools:node="replace">

Grazie mille
tej shah,

8

Nel mio caso stava mostrando un errore perché c'era una ridondanza <uses-permission>nell'elemento. Quindi, per favore controlla nel tuoAndroidManifest.xml file per lo stesso.

La versione di Android Studio è 3.0.1

Il sistema operativo è Windows 7

Ecco lo screenshot per riferimento.

Schermata che mostra la ridondanza nel file manifest.


Mentre questo è stato pubblicato prima della risposta di @ CLIFFORD-PY, la ricerca di errori di fusione tramite la vista Manifesto unito rileverà questo particolare errore ridondante.
sonyisda1,


7

Di solito si verifica quando si verificano errori nel manifest. Apri AndroidManifest.xml. Fai clic sulla scheda manifest unita. Gli errori possono essere visualizzati lì. Includi anche i suggerimenti menzionati lì. Quando ho avuto un problema simile durante l'importazione di com.google.android.gms .maps.model.LatLng, mi ha suggerito di includere strumenti: overrideLibrary = "com.google.android.gms.maps" nel tag dell'applicazione e la compilazione ha avuto esito positivo.


3

Il mio caso l'ho risolto da

build.gradle (Modulo: app)

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

Questa risposta è stata rimandata alla notifica push OnSignal


2
  1. In AndroidManifest.xml:

    • All'applicazione, aggiungi tools:replace="android:icon, android:theme e
    • Alla radice manifest, aggiungere xmlns:tools="http://schemas.android.com/tools
  2. In build.gradle:

    • Alla radice, aggiungi useOldManifestMerger true

2

La versione minium sdk dovrebbe essere la stessa dei moduli / lib che stai usando Ad esempio: la tua versione min sdk del modulo è 26 e la tua versione min sdk dell'app è 21 Dovrebbe essere la stessa.


1

negli ultimi giorni ho anche avuto lo stesso problema. Ma dopo molte ricerche ho finalmente trovato una soluzione per questo.
Per risolvere questo problema, ciò che devi fare è:
1. Verificare se del progetto build.gradle di file e del modulo build.gradle di file contengono stesse versioni di tutte le dipendenze.
2. Accertati che compileSdkVersion , buildToolsVersion , minSdkVersion e targetSdkVersion del progetto corrispondano a quelli dei moduli o delle librerie che hai aggiunto al progetto.

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

}

Spero che questo ti aiuti.


1

Se dopo aver aggiunto un modulo libreria Android e viene visualizzato questo errore.
Puoi risolverlo semplicemente rimuovendo android:label="@string/app_name"dal AndroidManifest.xmltuo Modulo Libreria Android


1

Apri la tua console di gradle, poi vedi gradle che ti suggerisce di aggiungere una particolare riga (come: tools: replace = "android: allowBackup" o tools: sostituisci = "android: label" ecc.). Aggiungi quella riga nel tuo file manifest sotto il tag e sincronizza il gradle, il gioco è fatto.


1

Nel mio caso è successo per aver lasciato qualche filtro di intento vuoto all'interno del tag Activity

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

            <intent-filter>

            </intent-filter>

    </activity> 

Quindi basta rimuoverli risolto il problema.

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

0

Come principiante in Android Studio, nel mio caso, avevo spostato un progetto esistente da Eclipse ad Android Studio e ho scoperto che c'era una definizione duplicata di un'attività all'interno del mio Manifest.xml che non era stata rilevata da Eclipse come mostrato un errore Gradle.

Ho trovato questo andando alla Console Gradle (in basso a destra dello schermo).


0

Mi è successo due volte quando rifrattore (Rinomina con MAIUSC + F6) il nome di un campo nei nostri file e ti chiede di cambiarlo ovunque e senza fare attenzione cambiamo il nome ovunque. Ad esempio, se nella classe Java è presente un nome variabile "id" e lo si rinomina con MAIUSC + F6. Se non presti attenzione alla finestra di dialogo successiva che ti chiederà in qualsiasi altro luogo in cui cambierà l'id e spunterai il segno di spunta tutto ciò cambierà tutti gli ID nei tuoi file di layout dal nuovo valore.


0

questo è un errore molto semplice che si verifica solo quando si definisce una chiamata di attività due volte nel file mainifest.xml Esempio simile

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

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



//solution:use only one 

0

Mettilo alla fine del modulo dell'app 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'
        }
    }
}}

da questa


0

Completa la risposta Phan Van Linh. Ho cancellato queste righe:

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

0

Basta migrare su Androidx come mostrato sopra e quindi impostare la versione minima di sdk su 26 ... senza dubbio questo funziona perfettamente


0

Il seguente hack funziona:

  1. Aggiungi il xmlns:tools="http://schemas.android.com/tools" linea nel tag manifest
  2. Aggiungi tools:replace="android:icon,android:theme,android:allowBackup,label,name" il tag dell'applicazione


0

Nel mio caso stavo usando alcune annotazioni della libreria jetbrains. Ho rimosso quelle annotazioni e dipendenze e ha funzionato bene.

Quindi controlla attentamente le librerie nel codice Android e le dipendenze.


0

Se stai utilizzando più manifestPlaceholderelementi nel tuobuild.gradle file, è necessario aggiungerli come elementi di matrice anziché elementi separati.

Ad esempio, ciò causerà un errore di compilazione o errore di compilazione: "java.lang.RuntimeException: fusione manifest non riuscita con più errori":

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

Questo risolverà l'errore:

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

0

Questo perché stai utilizzando la nuova libreria dei materiali con la libreria di supporto legacy.

Devi migrare android.supportverso androidxper usarecom.google.android.material .

Se stai utilizzando Android Studio v 3.2 o versioni successive, semplicemente

vai al refactor ---> MIGRATE TO ANDROID X.

Fai un backup del tuo progetto.


0

Stavo usando il FirebaseUI Libraryinsieme a Facebook SDK Library, che mi stava causando il problema.

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

E da [qui] [1], mi sono sbarazzato di questo problema.

Con la librerialatest update di FirebaseUI , versione precedente di Facebook SDK è anche una parte di esso.

Se si utilizzano entrambe le librerie, rimuovere la libreria SDK di Facebook .

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

AGGIORNARE

Dalle Android Studio 3.0versioni successive e successive, app.gradleè necessario utilizzare il file implementationo apiinvece di compileaggiungere le dipendenze all'app.


0

Dopo aver visto la risposta di CLIFFORD per vedere l'errore, ciò che mi ha aiutato a risolvere questo problema è stato rinominare "android: namex" in "android: name" nel tag di azione filtro intento. Nel caso in cui la stessa soluzione aiuti qualcun altro.

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
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.