La fusión del manifiesto falló: uses-sdk: minSdkVersion 14

233

Desde que descargué el último SDK e instalé Android Studio, mi proyecto no se puede construir. Me sale el siguiente mensaje:

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
fuente
Tengo el mismo error Error: Error de ejecución para la tarea ': aplicación: processDebugManifest'. > La fusión del manifiesto falló: uses-sdk: minSdkVersion 19 no puede ser más pequeña que la versión 19 declarada en la biblioteca com.android.support:support-v4:21.0.0-rc1
bobby.dhillon
Recibo la misma excepción minSdkVersion 15 no puede ser más pequeña que la versión 15. Las herramientas de compilación del SDK se han actualizado, así que supongo que es un error en Android Studio y las nuevas herramientas de compilación
Boardy
1
Parece ser un error: code.google.com/p/android/issues/detail?id=72430 La solución por ahora es comentar una línea en maven-metadata.xml
Emanuel Canha
posible duplicado de fusión
Marian Paździoch

Respuestas:

312

Nota: Esto se ha actualizado para reflejar el lanzamiento de API 21, Lollipop. Asegúrese de descargar el último SDK.

En uno de mis módulos tenía lo siguiente en build.gradle:

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

Cambiando esto a

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

solucionó el problema.

Asegúrese de que no está haciendo una inclusión general de com.android.support:support-v4:+ninguna otra biblioteca de soporte (v7, v13, appcompat, etc.) en ninguna parte de su proyecto.

Supongo que el problema es v4:+recoger la última versión L del candidato de lanzamiento (21.0.0-rc1) que obviamente requiere el L SDK.

Editar:

Si necesita usar las nuevas vistas (CardView, RecyclerView y Palette), lo siguiente debería 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 a EddieRingle en / androiddev - http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/ )

Otra edición

¡Asegúrese de ver la respuesta de @ murtuza a continuación con respecto a appcompat-v7 y votar si es útil!

loeschg
fuente
3
¿Qué pasa con una biblioteca compilada de Maven? ¿Cómo excluir la dependencia "antigua"?
Arnaud
44
@Arnaud compile ("blah: blah: bla") {excluir grupo: 'com.android.support', módulo: 'support-v4'}
AndroidGecko
3
Tenga en cuenta que para usar CardView, RecyclerView y Palette, también tendrá que alterar su Manifiesto para evitar los conflictos de fusión. Vea este enlace para más detalles: reddit.com/r/androiddev/comments/297xli/…
Michel
3
Nunca, nunca, sugiera a las personas que usen + en la versión de dependencia. SIEMPRE especifique la versión exacta de la biblioteca que desea usar (o está disponible en el momento en que escribe el código). Incluso 20. + es malo. Y si una biblioteca de la que depende sigue esta práctica BAD, considere excluir su dependencia y proporcionar su propia versión de esa dependencia. Esto hace que su construcción sea reproducible en cualquier momento. Mejore su respuesta al comprar eliminando su sugerencia de usar + en la versión de dependencia.
Daniele Segato
1
Lo que dijo @DanieleSegato. No recomiendo versiones dinámicas nunca. Son malas prácticas.
Xavier Ducrohet
69

Además, en caso de que esté importando la biblioteca appcompat-v7, asegúrese de etiquetar un número de versión al final de esta manera:

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

Después de solo cambiar la versión support-v4, aún recibí el error:

La fusión de manifiesto falló: uses-sdk: minSdkVersion 15 no puede ser más pequeña que la versión L declarada en la biblioteca com.android.support:support-v4:21.0.0-rc1

Fue un poco confuso porque parece que v4 sigue siendo el problema, pero, de hecho, restringir la versión de appcompat v7 solucionó el problema.

murtuza
fuente
¡Buena atrapada! ninguno de mis v7 tenía la versión en ellos tampoco.
RoundSparrow hilltx
y también lo mismo para el soporte v13)
Defuera
1
También tuve una discrepancia de appcompat_v7, buildToolsVersion '20.0.0'en mi android{}y compile 'com.android.support:appcompat-v7:20.0+'en mi dependencies {}no era lo mismo, así que los hice lo mismo (como se muestra aquí).
Azurespot
1
Es una mala práctica usar + identificador para futuras versiones. Especifica la versión exacta. Sugiero actualizar el 'com.android.support:appcompat-v7:19.+' a este 'com.android.support:appcompat-v7:19.0.0' o cuál es el último. Si aún tiene problemas, intente actualizar la biblioteca de soporte desde el administrador de SDK.
sud007
55

Solución 1:

Cambio usos-SDK para <uses-sdk tools:node="replace" />y añadir xmlns:tools="http://schemas.android.com/tools" enAndroidManifest.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>

Asegúrese de usar gradle 0.11 y superior para usar la fusión de manifiesto.

Solución 2:

  • Cambiar compile 'com.android.support:support-v4:+'a compile 'com.android.support:support-v4:20.+'en build.gradle. Esto evitará el uso de gradle v4:21.0.0que requiere la versión L.

  • Sin embargo, si alguna de sus dependencias externas usa lo mismo. Probablemente tendrá que esperar a que actualicen lo mismo.

Solución 3:

  • Eliminar / Comentar <version>21.0.0-rc1</version>en su archivo<android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

  • Repita lo mismo para support-v7

Gaurav Arora
fuente
En mi caso, también tuve que eliminar el equivalente de appcompat-v7.
eipipuz
2
Sí, no proporcione la solución 2 como opción. La gestión adecuada de la dependencia (usando la versión correcta), o usando la estrategia de resolución es la solución correcta. Editar el repositorio de Maven solo está retrasando el problema hasta que se publique un nuevo repositorio.
Xavier Ducrohet
La solución 1 + 3 me salvó la vida :)
Climbatize
2
¡La primera opción funciona! Le sugiero que agregue algunos detalles sobre por qué esto se debe hacer.
Tejasvi Hegde
24
<uses-sdk tools:node="replace" />

Ya no funciona

cambiar uses-sdka

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

y agregue
xmlns:tools="http://schemas.android.com/tools" el archivo AndroidManifest.xml

userM1433372
fuente
Como se describe aquí: tools.android.com/tech-docs/new-build-system/user-guide/…
IgorGanapolsky
Gracias @ userM1433372, voté por salvarme el día :)
Ravi Vaniya
11

El problema aún surge con las dependencias transitivas. Gradle ofrece una forma de forzar el uso de una versión específica de una dependencia.

Por ejemplo, puede agregar algo como:

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

a su build.gradle.

Si desea obtener más información sobre las estrategias de resolución de gradle, consulte esta guía http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

Encontré esto mientras leía el problema correspondiente que vincularé aquí

koesclem
fuente
¡Gracias! Más fácil que poner excluir en cada dependencia :)
Sloy
8

En el archivo build. debido a la reciente versión de vista previa para desarrolladores de L.

Realice cambios en la siguiente línea y resolverá el problema. Cambio

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

a

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

Del mismo modo, cuando utilice la biblioteca de soporte v7-appcompat, realice el cambio de

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

a

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

Además de las respuestas correctas anteriores, el problema aún puede ocurrir debido al anidamiento de la biblioteca. En este caso, intente con el siguiente ejemplo:

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

Para las personas que crean aplicaciones híbridas utilizando la CLI de cordova, este comando ayudará a:

cordova build android -- --minSdkVersion=15

sí, usa guiones dobles dobles como lo viste.

ProllyGeek
fuente
¿Esto resuelve el problema real? No. Solo funciona así, pero con cordova run androideso falla.
Ionut Necula
@lonut, ¿sabes cuál es el problema real?
ProllyGeek
En mi caso, el problema es un complemento que estoy usando llamado cordova-plugin-facebook4. Desinstalarlo hace que el cordova run androidtrabajo esté bien. Lamentablemente no encontré ninguna solución para esto en ningún lado. Intenté agregar manualmente el minSdkVersionmismo en el AndroidManifestpero se está sobrescribiendo. Aún tratando de averiguarlo.
Ionut Necula
@lonut Estoy usando el mismo complemento en alguna aplicación en la que estoy trabajando, avíseme si puedo ayudarlo. Sin embargo, debe revisar el archivo build.gradle, quizás si proporciona información adicional, puedo ayudarlo.
ProllyGeek
Finalmente lo resolví cambiando la minSdkversión a 15in config.xml. La línea: <preference name="android-minSdkVersion" value="14" />. De esta manera, el AndroidManifestarchivo se actualiza también con la nueva versión.
Ionut Necula
6

También tuve el mismo problema y los siguientes cambios me ayudaron:

de:

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

a:

dependencies {
 compile 'com.android.support:support-v4:20.0.0'
}
min2bro
fuente
No es un código. debe realizar este cambio en su archivo build.gradle.
min2bro
6

Para las personas que enfrentan este problema en la versión beta de Android Studio , la respuesta aceptada no resolvió mi problema. Al importar un proyecto descargado de GitHub, tenía lo siguiente en mi archivo build.gradle de la aplicación que daba un error en cuestión:

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

Pero en mi carpeta de biblioteca externa tengo esta carpeta:

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

Resolví el problema anterior cambiando la dependencia a:

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

Nota: es posible que también necesite descargar un nivel de API inferior al actualmente disponible en Android Studio para algunas bibliotecas y proyectos para que esto funcione correctamente.

Argumento ilegal
fuente
Este parece ser el problema fundamental: "donde sea que vea 'com.android.support:support'" ... "asegúrese de tener el valor actualizado" ¡Eso es aproximadamente el tamaño!
Fattie
5

Resolví el problema editando la siguiente línea en build.gradle y funciona. :-)

agregando la versión 20. + '

De

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

A

dependencies {
    compile 'com.android.support:appcompat-v7:20.+'
}
Cristiana Chavez
fuente
1
No me lo puedo creer. Ninguna de las otras respuestas anteriores funcionó para mí, excepto esta. ¡¡¡Gracias!!! Tenga en cuenta que tuve que cambiar mis archivos v4y los de v7soporte a :20.+.
Azurespot
5
compile('com.android.support:support-v4:19.1.0'){
    force = true
}

Me ayudó, tomado de aquí

Lina Shyshova
fuente
4

Debe configurar todos los soportes y bibliotecas de aplicaciones compatibles con la versión 19. +

Si la recomendación de abandonar la biblioteca de soporte con la versión 19. + no funciona, puede probar el siguiente consejo en su archivo AndroidManifest.

Primero agregue este código:

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

Y luego, a nivel de aplicación (¡no dentro de la aplicación!)

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

Hago todas las soluciones aquí sin resultado, así que busqué en otro lugar y encontré una manera de engañar al IDE, por lo que debe poner una línea en el Mainfest para que Gradle use una diferente, la que pones en build.gradle la línea es:

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

solo eso, y funciona.

Espero que ayude.

David Moreno Cantero
fuente
3
recuerde agregar: xmlns:tools="http://schemas.android.com/tools"en la <manifest>etiqueta
seb
3

Debe eliminar de build.gradle compile 'com.android.support:support-v13:+'

Igor Kostenko
fuente
3

Aquí está el nuevo error presentado para este por cierto https://code.google.com/p/android/issues/detail?id=72430

Suponiendo que está utilizando el repositorio de soporte, la solución consiste en comentar o eliminar la línea

21.0.0-rc1 en el archivo de listado de repositorio local de Maven en /extras/android/m2repository/com/android/support-v4/maven-metadata.xml

LemonGentry
fuente
1

Para mí, este problema se resuelve cambiando el

minSdkVersion 14

En el archivo build.gladdle y use el que se especifica en el mensaje de error

pero el problema era

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

Así que cambié de 14 a 15 en el archivo build.gladdle y funciona

darle una oportunidad.

Ruberandinda Paciencia
fuente
1

Simplemente apunte al requerido, minSdkVersiones decir, cambie al necesario En mi caso minSdkVersionfue 14.

Cambiando para minSdkVersion 16resolver el 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
fuente
0

No olvides que debes editar build.gradle en la subcarpeta 'app' de tu proyecto, no en la carpeta del proyecto. Perdí un día de trabajo tratando de resolver un problema con la versión "L".

CoolMind
fuente
0

Intente eliminar las carpetas de compilación en su proyecto y vuelva a sincronizar su proyecto gradle para reconstruirlo. Además, como otros han dicho en esta publicación, en lugar de hacer algo como esto:

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

hacer esto:

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

Gracias @Murtuza. Tu respuesta me ayudó a resolver mi problema pero en mi caso

compile 'com.android.support:support-v13:19.+ también, junto con

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

de compile 'com.android.support:support-v4:+' compile 'com.android.support:support-v7:+' compile 'com.android.support:support-v13:+' Hope esto podría ayudar a alguien

Deepthi
fuente
0

Tengo algunos proyectos donde prefiero apuntar a L.MR1 (SDKv22) y algunos proyectos donde prefiero KK (SDKv19). Su resultado puede ser diferente, pero esto funcionó para mí.

// 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
fuente
0

En Android Studio 1.1.0: Archivo - Estructura del proyecto - Tab Flavors - Seleccione Min SDK Version que es más alta que en Manifest

ea_
fuente
0

Tengo la segunda solución:

  1. descomprimir https://dl.dropboxusercontent.com/u/16403954/android-21.zipasdk\platforms\
  2. cambiar build.gradle like

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

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

    en manifiesto con xmlns:tools="schemas.android.com/tools";

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

desempaquete support-v4-21.0.0-rc1.aar y edite AndroidManifest.xml como

de

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

a

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

PD: Puedes hacer esto con todas las bibliotecas de soporte que necesites.

Vova K.
fuente
He cambiado "L" y reinicié el estudio de Android, pero obtengo el mismo problema al compilar el proyecto (Ctrl + F9)
Ankur Loriya
0

Lo único que funcionó para mí es esto:

En project.properties, cambié:

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

abelabbesnabi
fuente
0

Simplemente cambia el nivel mínimo de API de Build Settings -> Player Settings -> Other Settings -> Minimum SDK Leveluna versión superior.

Codemaker
fuente
0

La mejor manera es dejar que Android Studio solucione el problema.

Hice lo siguiente, y funcionó bien.

  1. Abra su proyecto en Android Studio, aparecerán errores emergentes, si se proporciona un enlace para solucionarlo, haga clic en él.

  2. Vuelva a abrir su proyecto en Android Studio, aparecerán errores emergentes, habrá un enlace esta vez si no se proporciona en el Paso 1, haga clic en el enlace dado para solucionarlo.

Tenga en cuenta que ambas operaciones tomaron varios minutos, pero resolvieron todos los problemas.

Manohar Reddy Poreddy
fuente
0

Solución: la fusión de manifiesto falló. Aplicación de atributo @ ppComponentFactory ...

Si está utilizando las últimas y mejores bibliotecas de Firebase o cualquier otra biblioteca, en realidad están usando AndroidX en lugar de android.support, ¡entonces podría tener el problema ya que la fusión del Manifiesto falló! Entonces, en este caso, su proyecto debe migrar a AndroidX. Entonces sigue el enlace: https://firebase.google.com/support/release-notes/android#update_-_june_17_2019

O mira este video. https://youtu.be/RgveQ4AY1L8 Gracias.

Subhojit Halder
fuente
Un enlace a una solución es bienvenido, pero debe asegurarse de que su respuesta también sea útil sin ella. Es mejor agregar contexto alrededor del enlace y describir la parte más relevante del tutorial al que está enlazando en caso de que la página de destino no esté disponible.
Joey
Es bueno saber de usted #Joey. Permítanme agregar alguna descripción adicional. Gracias.
Subhojit Halder