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


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 .


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.


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.


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


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.


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.


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

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.


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


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.


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


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

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.


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.


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


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.


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> 

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


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.


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 

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


0

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

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

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


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


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.


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

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.


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.


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>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.