Fusão do manifesto falhou com vários erros no Android Studio

249

Então, eu sou iniciante em Android e Java. Eu apenas comecei a aprender. Enquanto eu estava experimentando o Intent hoje, incorri em um erro.

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

Encontrei algumas soluções aqui e tentei implementá-las, mas não funcionou.

Este é o meu 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'
}

Este é o meu 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>

Esta é minha primeira semana de codificação, desculpe se isso é realmente uma coisa boba. Eu sou realmente novo nisso e não encontrei nenhum outro lugar para perguntar. Desculpe se eu quebrei alguma regra

Rohan Mallya
fonte
2
linha remove <atividade Android: name = "MainActivity." /> em seu arquivo menifest.xml
Pankaj Talaviya
10
Para obter informações detalhadas sobre o erro, consulte o Gradle Console no Android Studio no canto inferior direito.
DragonT 30/01
Espero que este link seja útil.
Mortreza AD
Eu obtive o mesmo erro, mas o resolvi mantendo o mesmo SDK mínimo no projeto e na biblioteca.
Raja Jawahar
youtu.be/K88WaSm3q8Y "A fusão do manifesto falhou com vários erros no Android Studio"?
Roman Pokrovskij

Respostas:

964

Abra o manifesto do aplicativo ( AndroidManifest.xml) e clique em Merged Manifest. Veja a imagem abaixo:

recurso android-manifest-merge-feature

Na imagem, você pode ver Erro na coluna da direita, tente resolver o erro. Pode ajudar alguém com o mesmo problema. Leia mais aqui .

CLIFFORD PY
fonte
5
brilhante ... não consigo encontrar palavras para expressar meu agradecimento #
Shahzad Afridi
2
no meu caso eu rolada-lhe um baixo bit para ver os erros
CodeToLife
Infelizmente, não há nenhuma guia "Manifesto mesclado" no Android Studio 3.5.2.
FractalBob 18/11/19
@FractalBob Estou executando o 3.5.2 e veja a guia 'Manifesto mesclado'. Talvez você tenha outro erro antes de os manifestos serem mesclados.
sonyisda1
@ sonyisda1 Você está executando em um ambiente Linux? Eu tenho o Ubuntu 18.04 LTS.
FractalBob 27/11/19
120

Remova <activity android:name=".MainActivity"/>do seu arquivo mainfest. Como você já definiu como:

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

Portanto, arquivo de manifesto mostrando ambiguidade.

Android Geek
fonte
31
É uma pena que esta seja a resposta aceita, quando apenas corrige o código de Rowen, mas é totalmente inútil para qualquer outra pessoa. A resposta do CLIFFORD realmente mostra como "ver logs", como sugere a mensagem de erro.
Andrew Koster
Funciona muito bem apenas para verificar e remover qualquer entrada duplicada no arquivo AndroidManifest.xml.
precisa saber é o seguinte
61

Para mim, isso funciona -

Localizando erros de mesclagem em AndroidManifest.xml

insira a descrição da imagem aqui

Clique em Manifesto mesclado em AndroidManifest.xml

insira a descrição da imagem aqui

Você pode exibir o erro de mesclagem de manifesto na coluna da direita. Pode ajudar a resolver esse problema.

Anirban
fonte
3
Esta é uma correção genérica para esse problema. Isso ajuda a encontrar o verdadeiro motivo de qualquer problema relacionado a isso.
JoeGalind
60

Eu também estava enfrentando os mesmos problemas e, depois de muita pesquisa, encontrei a solução:

  1. Sua versão min sdk deve ser a mesma dos módulos que você está usando, por exemplo: sua versão min módulo sdk é 14 e sua versão min app sdk é 9. Deve ser a mesma.
  2. Se a versão de compilação do seu aplicativo e módulos não for a mesma. Novamente, deve ser o mesmo ** Em suma, o build.gradlearquivo e o manifesto do aplicativo devem ter as mesmas configurações **
  3. Não há duplicidade, como as mesmas permissões adicionadas no arquivo de manifesto duas vezes, a mesma atividade mencionada duas vezes.
  4. Se você excluiu alguma atividade do seu projeto, exclua-a do seu arquivo de manifesto.
  5. Às vezes, é por causa da etiqueta, ícone, etc. etiqueta do arquivo de manifesto:

a) Adicione a xmlns:toolslinha na tag do manifesto.

b) Adicione tools:replace=ou tools:ignore=na etiqueta do aplicativo.

Exemplo:

<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 duas dependências não tiverem o mesmo exemplo de versão: você está usando a dependência do appcompat v7: 26.0.0 e do facebook com.facebook.android:facebook-android-sdk:[4,5) O facebook usa o cardview da versão com.android. support: cardview-v7: 25.3.1 e appcompat v7: 26.0.0 usa cardview da versão v7: 26.0.0, portanto, há descrições em duas bibliotecas e, portanto, dá erro

Erro: Falha na execução da tarefa ': app: processDebugManifest'.

Falha na fusão do manifesto: atributo meta-data#android.support.VERSION@value value = (26.0.0-alpha1) de [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml: 27: 9 -38 também está presente em [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml: 24: 9-31 value = (25.3.1). Sugestão: adicione 'tools: replace = "android: value"' ao elemento AndroidManifest.xml: 25: 5-27: 41 para substituir.

Portanto, usando o appcompat da versão 25.3.1, podemos evitar esse erro

Ao considerar os pontos acima em mente, você se livrará desse problema irritante. Você também pode conferir meu blog https://wordpress.com/post/dhingrakimmi.wordpress.com/23

Kimmi Dhingra
fonte
1
no meu caso, foi devido ao tema do módulo de E acrescentou então eu utilizados como ferramentas: substituir "ícone, a etiqueta, tema"
turbandroid
no meu caso, foi devido ao tema do módulo que adicionei, então usei como ferramentas: substitua "ícone, etiqueta, tema" e xmlns: tools = " schemas.android.com/tools ". Obrigado @ O'one
alfo888_ibg 23/03
14

Além das soluções disponíveis, verifique isso também.
Se você configurou o android:allowBackup="false"seu AndroidManifest.xml, pode haver um conflito paraandroid:allowBackup="true" em outras dependências.

Solução
Conforme sugerido por @CLIFFORD PY, alterne para Merged Manifestno seu AndroidManifest.xml. Estúdio Android irá sugerir para adicionar tools:replace="android:allowBackup"na <application />sua AndroidManifest.xml.

Chintan Shah
fonte
12

Eu estava enfrentando o mesmo problema e acabei de adicionar uma linha no meu manifest.xml e funcionou para mim.

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

adicione esta linha em

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

Espero que ajude.

Pre_hacker
fonte
muito obrigado! Eu estava enfrentando esse problema em um cenário muito específico causado pela página de suporte do Zendesk, ao clicar em "anexar arquivo". Tentei tantas respostas de perguntas diferentes e apenas seu comentário ajudou!
Natalie
@Natalie Estou feliz que ajudou :)
Pre_hacker
11

Basta adicionar o código abaixo na tag do aplicativo Manifest do projeto ...

<application
        tools:node="replace">
sankalp
fonte
Muito obrigado
tej shah
8

No meu caso, estava mostrando um erro porque havia uma redundância no <uses-permission>elemento. Então, verifique seuAndroidManifest.xml arquivo para o mesmo.

A versão do Android Studio é 3.0.1

O sistema operacional é o Windows 7

Aqui está a captura de tela para referência.

Captura de tela que mostra redundância no arquivo de manifesto.

Parth Patel
fonte
Embora isso tenha sido publicado antes da resposta do @ CLIFFORD-PY, encontrar erros de mesclagem na exibição Manifesto mesclado detectará esse erro redundante específico.
sonyisda1
8

Resolvi isso com o Refatorar -> Migrar para AndroidX

GL

Braian Coronel
fonte
7

Geralmente, ocorre quando você tem erros no manifesto. Abra o AndroidManifest.xml. Clique na guia do manifesto mesclado. Os erros podem ser vistos lá. Também inclui sugestões mencionadas lá. .maps.model.LatLng, sugeriu que eu incluísse ferramentas: overrideLibrary = "com.google.android.gms.maps" na tag do aplicativo e a compilação foi bem-sucedida.

Archana Prabhu
fonte
3

No meu caso, eu o corrigi por

build.gradle (módulo: app)

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

Esta resposta foi reletada à notificação por push do OnSignal

Md. Shofiulla
fonte
2
  1. Em AndroidManifest.xml:

    • No aplicativo, adicione tools:replace="android:icon, android:theme e
    • Na raiz do manifesto, adicione xmlns:tools="http://schemas.android.com/tools
  2. Em build.gradle:

    • Na raiz, adicione useOldManifestMerger true
ao wu
fonte
2

A versão minium sdk deve ser a mesma dos módulos / lib que você está usando. Por exemplo: Sua versão min module do sdk é 26 e sua versão min sdk do aplicativo é 21. Deve ser a mesma.

Ejaz Ahmad
fonte
1

Nos últimos dias, eu também estava passando pelo mesmo problema. Mas, depois de muita pesquisa, finalmente encontrei uma solução para isso.
Para resolver este problema, o que você precisa fazer é:
1. Verifique se o seu projeto build.gradle arquivo e do módulo build.gradle arquivo conter mesmas versões de todas as dependências.
2. Certifique-se de que compileSdkVersion , buildToolsVersion , minSdkVersion e targetSdkVersion do seu projeto correspondam ao dos módulos ou bibliotecas que você adicionou ao projeto.

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

}

Espero que isto ajude.

Rahul Deep Singh
fonte
1

Se depois de adicionar um módulo da biblioteca Android e você receber esse erro.
Você pode corrigi-lo por simples remover a android:label="@string/app_name"partir do AndroidManifest.xmldo seu módulo de biblioteca Android

Phan Van Linh
fonte
1

Abra o console do gradle e veja gradle sugerir que você adicione uma linha específica (como: tools: replace = "android: allowBackup" ou tools: replace = "android: label" etc). Adicione essa linha ao seu arquivo de manifesto em tag and sync gradle, é isso.

Nazmus Saadat
fonte
1

No meu caso, aconteceu por deixar algum filtro de intenção vazio dentro da tag Activity

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

            <intent-filter>

            </intent-filter>

    </activity> 

Então, apenas removê-los resolveu o problema.

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

Como iniciante no Android Studio, no meu caso, eu havia movido um projeto existente do Eclipse para o Android Studio e descobri que havia uma definição duplicada de uma atividade no meu Manifest.xml que não havia sido selecionada pelo Eclipse era mostrada como um erro Gradle.

Encontrei isso no Console Gradle (canto inferior direito da tela).

JanB
fonte
0

Aconteceu comigo duas vezes quando refatorei (renomeie com SHIFT + F6) o nome de um campo em nossos arquivos e solicita que você o altere em todos os lugares e, sem prestar atenção, alteramos o nome em todos os lugares. Por exemplo, se você tiver um nome de variável "id" em sua classe Java e renomeá-lo com SHIFT + F6. Se você não prestar atenção à próxima caixa de diálogo, que perguntará onde quer que ele altere a identificação e marque a caixa de seleção, tudo mudará a identificação nos arquivos de layout do novo valor.

Rakesh Yadav
fonte
0

esse erro é muito simples e ocorre apenas quando você define qualquer chamada de atividade duas vezes no arquivo mainifest.xml

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

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



//solution:use only one 
Lalit Baghel
fonte
0

Coloque isso no final do seu módulo de aplicativo 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'
        }
    }
}}

a partir disso

SHADOW NET
fonte
0

Complemente a resposta Phan Van Linh. Eu apaguei estas linhas:

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

Basta migrar para o Androidx, como mostrado acima, e depois definir a versão mínima do sdk para 26 ... sem dúvida, isso funciona perfeitamente

sammy mutahi
fonte
0

O seguinte hack funciona:

  1. Adicione o xmlns:tools="http://schemas.android.com/tools" linha na tag manifest
  2. Adicionar tools:replace="android:icon,android:theme,android:allowBackup,label,name" na tag do aplicativo
Shoaib Ahmed
fonte
0

Resolvi isso removendo a android:replacetag

Gurjap singh
fonte
0

No meu caso, eu estava usando algumas anotações da biblioteca jetbrains. Eu removi essas anotações e dependências e funcionou bem.

Portanto, verifique as bibliotecas no código e dependências do Android com cuidado.

Chaman Gurjar
fonte
0

Se você estiver usando vários manifestPlaceholderitens no seu build.gradlearquivo, adicione-os como elementos da matriz, em vez de itens separados.

Por exemplo, isso causará um erro de compilação ou erro de compilação: "java.lang.RuntimeException: Falha na fusão do manifesto com vários erros":

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

Isso corrigirá o erro:

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}
Mr-IDE
fonte
0

Isso ocorre porque você está usando a nova biblioteca de materiais com a biblioteca de suporte herdada.

Você precisa migrar android.supportpara androidxpara usar com.google.android.material.

Se você estiver usando o android studio v 3.2 ou superior, basta

vá para refatorar ---> MIGRAR PARA ANDROID X.

Faça um backup do seu projeto.

Fazal Jarral
fonte
0

Eu estava usando o FirebaseUI Libraryjunto com o Facebook SDK Library, o que estava me causando o problema.

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

E a partir de [aqui] [1], me livrei desse problema.

Com o latest updateda biblioteca FirebaseUI , versão anterior do SDK do Facebook também é uma parte dela.

Se você estiver usando as duas bibliotecas, remova a Biblioteca do SDK do Facebook .

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

ATUALIZAR

Nas Android Studio 3.0versões e versões posteriores, app.gradleé necessário usar o arquivo implementationou em apivez de compileadicionar as dependências ao aplicativo.

Mohammedsalim Shivani
fonte
0

Depois de ver a resposta da CLIFFORD para ver o erro, o que me ajudou a resolver esse problema foi renomear 'android: namex' para 'android: name' na tag de ação do filtro de intenção. Caso a mesma solução ajude outra pessoa.

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
Farhan
fonte