Erro no ícone do Android studio Gradle, Manifest Merger

141

Continuo vendo essa mensagem e não sei como resolvê-la para 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

Tentei adicionar android:replace="android:icon"ao meu manifesto mesmo com o meu ícone.

Eu tentei excluir o android:icon="@drawable/ic_launcherda biblioteca, mas ele continua voltando quando eu construo porque é importado do maven

Alguma ideia ?

shimi_tap
fonte
Esse problema ocorre quando o problema nas tags de arquivo de manifesto. Por favor, verifique a resposta stackoverflow.com/a/39509659/2732632
Kimmi Dhingra
Eu enfrentei o mesmo problema quando adicionei permissões duplicadas no manifesto.
Cloy

Respostas:

342

Parece ser a falha da principal ferramenta de fusão para gradle.

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

Resolvi adicionando à minha tag de manifesto xmlns:tools="http://schemas.android.com/tools"

Em seguida, adicionado tools:replace="android:icon,android:theme"à tag do aplicativo

Isso diz à fusão para usar meu ícone e tema de manifesto e não de outras bibliotecas

Espero que ajude obrigado

shimi_tap
fonte
6
O problema ainda persiste para mim. Trabalhando no Android Studio 1.1.
Bolling
1
Obrigado! Trabalhou para mim
Sandeep
4
Versões mais recentes do android 2.0. não está funcionando. Quem respondeu deve atualizar este Q, se ele quis dizer salvar gerações, será inútil em breve #
Karue Benson Karue
3
Studio 2.2 a partir de hoje todos com isso e nt trabalhar esta questão
Prasad
2
não funciona no Android Studio 2.2 com gradle 2.2.0.
DysaniazzZ
54

Eu tenho o mesmo problema, eu corrijo assim adicionando xmlns:tools="http://schemas.android.com/tools"ao topo do arquivo mainfest e adiciono tools:replace="android:icon"a aparência

<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>
Mina Fawzy
fonte
1
não está funcionando para o Android Studio 2.2 e o gradle 2.2.0.
DysaniazzZ
resposta brilhante
Gundu Bandgar 23/09
10

Eu tenho o mesmo erro, apenas este código resolve meu problema, quero compartilhar com você:

em Manifest.xml:

  • adicione este código no topo do seu arquivo xml:

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

  • Em seguida, acrescentou:

    tools:replace="android:icon,android:theme,android:label,android:name" para a tag do aplicativo

Adnan Abdollah Zaki
fonte
@DysaniazzZ, não depende do Android Studio. veja o log de mensagens.
Adnan Abdollah Zaki -
Ok, eu vou ver.
DysaniazzZ
@ Por outro lado, verifique o seu log de mensagens, acho que não depende do android studio.
Adnan Abdollah Zaki
@ adnan9011, meu problema era ter permissões duplicadas no arquivo de manifesto.
Darush
9

A resposta de shimi_tap é suficiente. O que deve ser lembrado é que escolher apenas o que você precisa. Escolha entre {ícone, nome, tema, rótulo}. Eu adicionei tools:replace="android:icon,android:theme", não funciona. Eu adicionei tools:replace="android:icon,android:theme,android:label,android:name", não funciona. Funciona quando adicionei tools:replace="android:icon,android:theme,android:label". Portanto, descubra qual é exatamente o conflito em seus arquivos de manifesto.

黄锐铭
fonte
1
não está funcionando para o Android Studio 2.2 e o gradle 2.2.0.
DysaniazzZ
5

Basta adicionar xmlns:tools="http://schemas.android.com/tools"à sua tag de manifesto e precisar adicionar tools:replace="android:icon" antes android:icon="@mipmap/ic_launcher" .

Ilya Pepino
fonte
3

Este erro também ocorre quando o minSdk do seu aplicativo é superior ao minSdk de qualquer biblioteca.

app's minSdk >= libraries minSdk
Hisham Muneer
fonte
1
Então qual é a solução?
itzhar #
2

OBTEVE A SOLUÇÃO APÓS MUITO TEMPO

basta pegar o ic_launcher e colá-lo na pasta drawables,

Vá para o seu manifesto e mude o android: icon = "@ drawable / ic_launcher"

Limpe seu projeto e reconstrua

Espero que ajude você

Ismael ozil
fonte
2

Eu tive esse problema ao alterar o ícone do drawable para o mipmap.

Eu só perdi a linha

tools:replace="android:icon"

no manifesto.

Alecs
fonte
1

Por alguma razão, o android studio não gosta de chamar o ícone do aplicativo da pasta drawable. Então, nesse caso, criei o diretório de recursos mipmap na pasta res.

Clique com o botão direito do mouse na pasta res> novo> diretório de recursos do Android> tipo de recurso: mipmap e agora solte qualquer ícone lá e faça referência a ele no arquivo de manifesto. Compartilhar isso, já que esse método funcionou para mim.

android: icon: @ drawable / ic_launcher "

para

android: icon = "@ mipmap / ic_launcher"

Alex
fonte
para mim, definir o estilo parecia melhor, android:theme="@style/AppTheme" consulte -> gist.github.com/CrandellWS/4d284b11b5bca3054bddf8f511e49ae9
CrandellWS
1

Se nada disso funcionar, feche o Android Studio. Acesse app / src / main, abra o arquivo AndroidManifest.xml em um editor de texto (como sublime), remova / substitua as linhas de erros, salve e reabra o android studio.

Ricardo Mutti
fonte
1

Quando um valor de atributo contém um espaço reservado (veja o formato abaixo), a fusão de manifesto trocará esse valor por um valor injetado. Os valores injetados são especificados no build.gradle. A sintaxe para os valores dos espaços reservados é $ {name}, pois @ é reservado para links. Após a última fusão do arquivo, e antes que o arquivo de manifesto android mesclado resultante seja gravado, todos os valores com um espaço reservado serão trocados pelos valores injetados. Uma quebra de construção será gerada se um nome de variável for desconhecido.

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

Shixin Zhang
fonte
0

A resposta de Shimi_tap é o caminho certo para corrigir o problema. Se você deseja usar a ferramenta de fusão antiga, pode adicioná-la ao arquivo build.gradle

android {useOldManifestMerger true}

San
fonte
2
"Em 1,0, removemos a capacidade de invocar o velho fusão manifesto ..." Tools.android.com/tech-docs/new-build-system/user-guide/...
devgrg
Não foi possível encontrar o método useOldManifestMerger () para argumentos [true] no projeto ': app' do tipo org.gradle.api.Project.
DysaniazzZ
0

Para mim, esse problema ocorreu após a atualização do Google Play Services. Uma das bibliotecas que eu estava usando incorporou essa biblioteca usando o "+" em sua referência gradel, como

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

Isso criou um problema porque a versão mínima segmentada por essa biblioteca era menor do que a versão atual do Google Play Services. Eu encontrei isso simplesmente olhando nos logs.

Rarw
fonte
0

Na sua .gradlemodificação MinSDK, por exemplo:

  • build.gradle (Módulo: aplicativo)
    • antes: minSdkVersion 9
    • depois de: minSdkVersion 14

etc.

Briliant Fay
fonte
0

Eu tentei toda a solução mencionada acima

em Manifest.xml:

  • adicione este código na parte superior do arquivo xml na tag manifest:

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

  • Em seguida, acrescentou:

    tools:replace="android:icon,android:theme,android:label,android:name" para a tag do aplicativo

mas nada disso funcionou. Eu precisava excluir um arquivo xml que estava situado em

mipmap-anydpi-v26 / ic_launcher_round.xml

Eu estava testando o aplicativo em

Samsung Galaxy 8 com OS versão 8.0.0

é realmente uma solução?

surhidamatya
fonte
0

No arquivo AndroidManifest.xml, adicione o seguinte ao applicationnó:

tools:replace="android:appComponentFactory,android:icon,android:theme,android:label,android:name"
Messou
fonte