Falha na fusão do manifesto: uses-sdk: minSdkVersion 14

233

Desde o download do SDK mais recente e a instalação do Android Studio, meu projeto falha ao criar. Recebo a seguinte mensagem:

Error:Gradle: Execution failed for task ':SampleProject:processProdDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1
loeschg
fonte
Estou tendo o mesmo erro Erro: Falha na execução da tarefa ': app: processDebugManifest'. > Fusão manifesto falhou: usos-SDK: minSdkVersion 19 não pode ser menor do que a versão 19 declarou em com.android.support:support-v4:21.0.0-rc1 biblioteca
bobby.dhillon
Eu estou recebendo a mesma exceção minSdkVersion 15 não pode ser menor do que a versão 15. As ferramentas de compilação SDK foi atualizado para que eu acho que é um bug no Android Studio e as novas ferramentas de compilação
Boardy
1
Parece ser um erro: code.google.com/p/android/issues/detail?id=72430 A correção para agora é comentar uma linha no-metadata.xml maven
Emanuel Canha

Respostas:

312

Nota: Isso foi atualizado para refletir o lançamento da API 21, Lollipop. Certifique-se de baixar o SDK mais recente.

Em um dos meus módulos, eu tinha o seguinte em build.gradle:

dependencies {
    compile 'com.android.support:support-v4:+'
}

Alterando isso para

dependencies {
    // do not use dynamic updating.
    compile 'com.android.support:support-v4:21.0.0' 
}

corrigiu o problema.

Verifique se você não está fazendo uma inclusão geral com.android.support:support-v4:+ou qualquer outra biblioteca de suporte (v7, v13, appcompat etc.) em qualquer lugar do seu projeto.

Eu diria que o problema é v4:+pegar o último release L do candidato a lançamento (21.0.0-rc1), que obviamente requer o L SDK.

Editar:

Se você precisar usar os novos modos de exibição (CardView, RecyclerView e Palette), o seguinte deverá funcionar:

compile "com.android.support:cardview-v7:21.0.0"
compile "com.android.support:recyclerview-v7:21.0.0"
compile "com.android.support:palette-v7:21.0.0"

(Crédito para EddieRingle em / androiddev - http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/ )

Outra Edição

Certifique-se de ver a resposta de @ murtuza abaixo sobre appcompat-v7 e upvote se isso ajudar!

loeschg
fonte
3
E uma biblioteca compilada pelo Maven? Como excluir a dependência "antiga"?
Arnaud
4
@Arnaud compile ("blá: blá: blá") {excluir grupo: 'com.android.support', módulo: 'support-v4'}
AndroidGecko 27/06/2014
3
Observe que, para usar o CardView, RecyclerView e Palette, você também precisará alterar seu manifesto para evitar os lançamentos de gradle de conflito de mesclagem. Veja este link para obter detalhes: reddit.com/r/androiddev/comments/297xli/…
Michel
3
Nunca, nunca, sugira que as pessoas usem + na versão de dependência. SEMPRE especifique a versão exata da biblioteca que você deseja usar (ou está disponível no momento em que você escreve o código). Mesmo 20. + é ruim. E se uma biblioteca da qual você depende seguir esta prática MAU, considere excluir sua dependência e fornecer sua própria versão dessa dependência. Isso torna sua compilação reproduzível a qualquer momento. Melhore sua resposta de compra removendo sua sugestão de usar + na versão de dependência.
Daniele Segato
1
O que @DanieleSegato disse. Nunca recomende versões dinâmicas. São más práticas.
Xavier Ducrohet
69

Além disso, caso esteja importando a biblioteca appcompat-v7, certifique-se de marcar um número de versão no final da seguinte forma:

compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:appcompat-v7:19.+'

Depois de alterar apenas a versão support-v4, ainda recebi o erro:

Falha na fusão do manifesto: uses-sdk: minSdkVersion 15 não pode ser menor que a versão L declarada na biblioteca com.android.support:support-v4:21.0.0-rc1

Foi um pouco confuso porque parece que a v4 ainda é o problema, mas, de fato, restringir a versão do appcompat v7 corrigiu o problema.

murtuza
fonte
Boa pegada! nenhum dos meus v7 tinha a versão deles também.
RoundSparrow hilltx
e também a mesma coisa para v13 suporte)
Defuera
1
Eu também tinha uma incompatibilidade de appcompat_v7, buildToolsVersion '20.0.0'no meu android{}e compile 'com.android.support:appcompat-v7:20.0+'no meu dependencies {}não era o mesmo, então fiz o mesmo (como mostrado aqui).
Azurespot
1
É uma prática ruim usar o identificador + para versões futuras. Especifique a versão exata. Sugiro atualizar o 'com.android.support:appcompat-v7:19.+' para este 'com.android.support:appcompat-v7:19.0.0' ou qual é o mais recente. Se você ainda tiver problemas, tente atualizar a biblioteca de suporte do gerenciador do SDK.
sud007
55

Solução 1:

Mudança usos-SDK para <uses-sdk tools:node="replace" />e adicionar xmlns:tools="http://schemas.android.com/tools" noAndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.demo.android"
    android:versionCode="16"
    android:versionName="3.3.1">
    .
    .
    <uses-sdk tools:node="replace" />
    .
    .
</manifest>

Certifique-se de usar o gradle 0.11 e acima para usar a fusão de manifesto.

Solução 2:

  • Mude compile 'com.android.support:support-v4:+'para compile 'com.android.support:support-v4:20.+'in build.gradle. Isso impedirá o uso do gradle v4:21.0.0que requer a versão L.

  • No entanto, se alguma de suas dependências externas usar o mesmo. Você provavelmente terá que esperar que eles atualizem o mesmo.

Solução 3:

  • Remover / comentar <version>21.0.0-rc1</version>no seu arquivo<android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

  • Repita o mesmo para support-v7

Gaurav Arora
fonte
No meu caso, também tive que remover o equivalente appcompat-v7.
eipipuz
2
Sim, não forneça a solução 2 como opção. O gerenciamento adequado de dependências (usando a versão correta) ou a estratégia de resolução é a solução certa. A edição do repositório maven apenas atrasa o problema até que um novo repositório seja lançado.
Xavier Ducrohet
A solução 1 + 3 salvou minha vida :)
Climbatize
2
Primeira opção funciona! Eu sugiro que você adicione alguns detalhes sobre por que isso deve ser feito.
Tejasvi Hegde 11/11
24
<uses-sdk tools:node="replace" />

Não funciona mais.

mude uses-sdkpara

<uses-sdk tools:overrideLibrary="com.packagename.of.libary.with.conflict" />

e adicione
xmlns:tools="http://schemas.android.com/tools" o arquivo AndroidManifest.xml

userM1433372
fonte
Conforme descrito aqui: tools.android.com/tech-docs/new-build-system/user-guide/…
IgorGanapolsky 20 /
Obrigado @ userM1433372, votado por salvar o meu dia :)
Ravi Vaniya 20/01
11

O problema ainda surge com dependências transitivas. Gradle oferece uma maneira de forçar o uso de uma versão específica de uma dependência.

Por exemplo, você pode adicionar algo como:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:20.+'
        force 'com.android.support:appcompat-v7:20.+'
    }
}

para o seu build.gradle.

Se você quiser saber mais sobre as estratégias de resolução de notas, consulte este guia http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

Encontrei isso ao ler o problema correspondente, que irei linkar aqui

koesclem
fonte
Obrigado! Mais fácil do que colocar excluir em cada dependência :)
Sloy
8

No arquivo build.gradle, era por padrão compilar 'com.android.support:support-v4:+'; portanto, ao criar o gradle, o projecit consideraria com.android.support:support-v4:21.0.0-rc1 por causa do recente lançamento da versão L do desenvolvedor.

Faça as alterações na linha a seguir e ele resolverá o problema. mudança

compile 'com.android.support:support-v4:+' 

para

compile 'com.android.support:support-v4:20.+'

Da mesma forma, ao usar a biblioteca de suporte v7-appcompat, faça a alteração de

compile 'com.android.support:appcompat-v7:+'

para

compile 'com.android.support:appcompat-v7:20.+'.
Bhargav Jhaveri
fonte
8

Adicionando as respostas corretas acima, o problema ainda pode ocorrer devido ao aninhamento da biblioteca. Nesse caso, tente como o exemplo abaixo:

compile 'com.android.support:support-v4:20.+'
compile ('com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+') { // example
    exclude group: 'com.android.support', module:'support-v4'
    exclude group: 'com.android.support', module:'appcompat-v7'
}
Leonardo Cardoso
fonte
7

para pessoas que desenvolvem aplicativos híbridos usando a CLI cordova, este comando ajudará:

cordova build android -- --minSdkVersion=15

sim, ele usa traços duplos duplos como você o viu.

ProllyGeek
fonte
Isso resolve o problema real? Não. Só funciona assim, mas com cordova run androidisso falha.
Ionut Necula
@lonut você sabe qual é o problema real?
ProllyGeek
No meu caso, o problema é um plugin que estou usando chamado cordova-plugin-facebook4. Desinstalar, faz o cordova run androidtrabalho muito bem. Infelizmente, não encontrei nenhuma solução para isso em nenhum lugar. Eu tentei adicionar manualmente a minSdkVersionmim mesmo no AndroidManifestmas está sendo substituído. Ainda tentando descobrir.
Ionut Necula
@lonut Estou usando o mesmo plugin em algum aplicativo em que estou trabalhando, deixe-me saber se posso ajudar. No entanto, você precisa revisar o arquivo build.gradle, talvez se você fornecer informações extras que eu possa ajudar.
ProllyGeek #
Finalmente resolvi alterando a minSdkversão para 15in config.xml. A linha: <preference name="android-minSdkVersion" value="14" />. Dessa forma, o AndroidManifestarquivo está sendo atualizado também com a nova versão.
Ionut Necula
6

Eu também tive o mesmo problema e as alterações a seguir me ajudaram:

de:

dependencies {
    compile 'com.android.support:support-v4:+'

para:

dependencies {
 compile 'com.android.support:support-v4:20.0.0'
}
min2bro
fonte
não é um código. você precisa fazer essa alteração no arquivo build.gradle.
Min2bro 17/09/2014
6

Para as pessoas que enfrentam esse problema na versão beta do Android Studio , a resposta aceita não resolveu meu problema. Importando um projeto baixado do GitHub, eu tinha o seguinte no meu arquivo build.gradle do aplicativo, causando um erro em questão:

 dependencies {
    compile 'com.android.support:support-v4:+'
}

Mas na minha pasta de biblioteca externa, tenho esta pasta:

support-v4-21.0.0-rc1 //note the 21

Resolvi o problema acima alterando a dependência para:

dependencies {
compile 'com.android.support:support-v4:20.+' //20 used less than available strange but works
}

Nota: também pode ser necessário baixar o nível da API abaixo do atualmente disponível no Android Studio para que algumas bibliotecas e projetos funcionem corretamente.

Argumento ilegal
fonte
Esse parece ser o problema fundamental: "onde quer que você veja 'com.android.support:support'" ... "verifique se você possui o valor atualizado" Isso é o tamanho dele!
Fattie
5

Resolvi o problema editando a linha abaixo em build.gradle e funciona! :-)

adicionando a versão 20. + '

De

 dependencies {
        compile 'com.android.support:appcompat-v7:+'
    }

Para

dependencies {
    compile 'com.android.support:appcompat-v7:20.+'
}
Cristiana Chavez
fonte
1
Eu não acredito. Nenhuma das outras respostas acima funcionou para mim, exceto esta. Obrigado!!! Observe que eu tive que mudar meus arquivos v4e v7suporte para o arquivo :20.+.
Azurespot
5
compile('com.android.support:support-v4:19.1.0'){
    force = true
}

Me ajudou, tirado daqui

Lina Shyshova
fonte
4

Você precisa configurar todos os suportes e bibliotecas appcompat com a versão 19.

Se a recomendação de deixar a biblioteca de suporte com a versão 19. + não funcionar, tente a próxima dica no seu arquivo AndroidManifest.

Primeiro adicione este código:

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

E então, no nível do aplicativo (não dentro do aplicativo!)

<uses-sdk tools:node="replace" />
Aracem
fonte
4

Eu faço todas as soluções aqui sem resultado, então eu procuro outro lugar e encontrei uma maneira de enganar o IDE, então você deve colocar uma linha no Mainfest para fazer com que o Gradle use uma diferente, a que você coloca no build.gradle a linha é:

<uses-sdk tools:node="replace" />

apenas isso e funciona.

Espero que ajude.

David Moreno Cantero
fonte
3
lembre-se de acrescentar: xmlns:tools="http://schemas.android.com/tools"na <manifest>-tag
seb
3

Você precisa remover do build.gradle compile 'com.android.support:support-v13:+'

Igor Kostenko
fonte
3

Aqui está o novo bug registrado para este https://code.google.com/p/android/issues/detail?id=72430

Supondo que você esteja usando o Repositório de Suporte, a solução alternativa é comentar ou remover a linha

21.0.0-rc1 no arquivo de listagem de repositório Maven local em /extras/android/m2repository/com/android/support-v4/maven-metadata.xml

LemonGentry
fonte
1

Para mim, o problema como esse é resolvido alterando o

minSdkVersion 14

No arquivo build.gladdle e use o que está especificado na mensagem de erro

mas o problema era

Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 15 declared in library

Então mudei de 14 para 15 no arquivo build.gladdle e ele funciona

De uma chance.

Ruberandinda Paciência
fonte
1

Basta direcionar o necessário, minSdkVersionou seja, mudar para o necessário. No meu caso, minSdkVersionera 14.

Alterando para minSdkVersion 16resolver o problema

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 14
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
Kim
fonte
0

Não se esqueça, você deve editar o build.gradle na subpasta 'app' do seu projeto, não na pasta do projeto. Perdi um dia útil tentando resolver um problema com a versão "L".

CoolMind
fonte
0

Tente excluir a construção pasta (s) no seu projeto e sincronizar novamente seu projeto Gradle para reconstruí-lo. Além disso, como outros já disseram neste post - em vez de fazer algo assim:

compile 'com.android.support:support-v4:19.+'

faça isso:

compile 'com.android.support:support-v4:19.1.0'
IgorGanapolsky
fonte
0

Obrigado @Murtuza. Sua resposta me ajudou a resolver meu problema, mas no meu caso

compile 'com.android.support:support-v13:19.+ também, junto com

compile 'com.android.support:support-v4:19.+' compile 'com.android.support:appcompat-v7:19.+'

da compile 'com.android.support:support-v4:+' compile 'com.android.support:support-v7:+' compile 'com.android.support:support-v13:+' Hope isso pode ajudar alguém

Deepthi
fonte
0

Tenho alguns projetos nos quais prefiro direcionar L.MR1 (SDKv22) e alguns nos quais prefiro KK (SDKv19). Seu resultado pode ser diferente, mas isso funcionou para mim.

// Targeting L.MR1 (Android 5.1), SDK 22
android {
    compileSdkVersion 22
    buildToolsVersion "22"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 22
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // google support libraries (22)
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:cardview-v7:21.0.3'
    compile 'com.android.support:recyclerview-v7:21.0.3'
}



// Targeting KK (Android 4.4.x), SDK 19
android {
    compileSdkVersion 19
    buildToolsVersion "19.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // google libraries (19)
    compile 'com.android.support:support-v4:19.1+'
    compile 'com.android.support:appcompat-v7:19.1+'
    compile 'com.android.support:cardview-v7:+'
    compile 'com.android.support:recyclerview-v7:+'
}
AG1
fonte
0

No Android Studio 1.1.0: Arquivo - Estrutura do projeto - Tipos de guias - Selecione a versão mínima do SDK, superior à do manifesto

ea_
fonte
0

Eu tenho a segunda solução:

  1. descompacte https://dl.dropboxusercontent.com/u/16403954/android-21.zipparasdk\platforms\
  2. alterar build.gradle como

    compileSdkVersion 21
    buildToolsVersion "20.0.0"
    
    defaultConfig {
        applicationId "package.name"
        minSdkVersion 10
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
  3. adicionar

    <uses-sdk tools:node="replace" /> 

    em manifesto com xmlns:tools="schemas.android.com/tools";

  4. Vamos para sdk\extras\android\m2repository\com\android\support\support-v4\21.0.0-rc1\

descompacte support-v4-21.0.0-rc1.aar e edite o AndroidManifest.xml como

de

<uses-sdk
        android:minSdkVersion="L"
        android:targetSdkVersion="L" />

para

<uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="21" />

PS Você pode fazer isso com todas as bibliotecas de suporte necessárias.

Vova K.
fonte
Eu mudei "L" e reiniciado estúdio android mas ficando mesmo problema quando o projeto de construção (ctrl + f9)
Ankur Loriya
0

A única coisa que funcionou para mim é esta:

Em project.properties, mudei:

cordova.system.library.1 = com.android.support: support-v4: + para cordova.system.library.1 = com.android.support: support-v4: 20. +

abelabbesnabi
fonte
0

Você acabou de alterar o Nível Mínimo da API de Build Settings -> Player Settings -> Other Settings -> Minimum SDK Levelpara uma versão superior.

Codemaker
fonte
0

A melhor maneira é deixar o Android Studio corrigir o problema.

Eu fiz o abaixo, e funcionou bem.

  1. Abra seu projeto no Android Studio, os erros serão pop-up, se houver um link fornecido para corrigi-lo, clique nele.

  2. Reabra o seu projeto no Android Studio, os erros serão pop-up, desta vez, haverá um link se não for fornecido na Etapa 1, clique no link fornecido para corrigi-lo.

Observe que as duas operações levaram vários minutos, mas corrigiram todos os problemas.

Manohar Reddy Poreddy
fonte
0

Solução: Falha na fusão do manifesto Aplicativo de atributo @ ppComponentFactory ...

Se você estiver usando as melhores e mais recentes bibliotecas do Firebase ou quaisquer outras bibliotecas, essas estão realmente usando o AndroidX em vez do android.support, então você pode ter o problema porque a fusão do manifesto falhou !! Portanto, nesse caso, seu projeto precisa migrar para o AndroidX. Então, siga o link: https://firebase.google.com/support/release-notes/android#update_-_june_17_2019

Ou assista a este vídeo. https://youtu.be/RgveQ4AY1L8 Obrigado.

Subhojit Halder
fonte
Um link para uma solução é bem-vindo, mas você deve garantir que sua resposta também seja útil sem ela. É melhor adicionar contexto ao redor do link e descrever a parte mais relevante do tutorial ao qual você está vinculando, caso a página de destino não esteja disponível.
Joey
É bom ouvir de você #Joey. Deixe-me adicionar uma descrição extra. Obrigado.
Subhojit Halder