tools suggestion merger failed attribute application appcomponentfactory android android-studio android-manifest android-gradle build.gradle

android - suggestion - uses-sdk element no puede tener un atributo "tools: node"



manifest merger failed attribute application appcomponentfactory (5)

Solución:--

Agregue esta línea a la etiqueta uses-sdk como esta:

<uses-sdk tools:node="merge" <----This line do the magic android:minSdkVersion="14" android:targetSdkVersion="19" />

Y añada el espacio de nombres de las herramientas en el manifiesto: -

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ..... .../>

He actualizado Android Studio anoche a 0.9.0, buildToolsVersion a 21.1.0 y gradle a 0.14.0, después de eso recibo este error

Error: la ejecución ha fallado para la tarea '': app: processDebugManifest''. Fallo de fusión de manifiesto: el elemento uses-sdk no puede tener un atributo "tools: node"

He pasado la última noche buscando una solución, encontré esto:
<uses-sdk tools:node="replace" />

¡Pero desafortunadamente, agregó un error más!

Error: (10, 5) utiliza el elemento sdk no puede tener un atributo "tools: node"
Error: (10, 5) Error de ejecución para la tarea '': app: processDebugManifest''.
Fallo de fusión de manifiesto: el elemento uses-sdk no puede tener un atributo "tools: node"

Otra solución que he leído, para no usar support-v4: 21, para mí no la uso, ya que estoy usando v13.


Me encontré con esto después de actualizar a Android Studio 1.0.0 rc4. Anteriormente había estado usando para poder realizar proyectos con versiones de SDK mín. Más bajas que algunas de las bibliotecas de las que dependían. Resulta que, si elimina las herramientas: reemplace y deje que el error del compilador vuelva a aparecer con el conflicto de combinación de manifiesto, le proporcionará una solución mucho mejor:

<uses-sdk tools:overrideLibrary="com.google.android.gms" />

Al menos, la biblioteca de Google Play Services era lo que estaba encontrando. En realidad, puede enumerar un montón si es necesario. Solo coma por separado los nombres de los paquetes. Es posible que deba ejecutar el compilador varias veces hasta que le indique todas las bibliotecas que están causando problemas.


Mi solución

  • He eliminado todas las <uses-sdk tools:node="replace" /> todos mis archivos manifest.xml
  • En mi archivo base.gradle (el de todo el proyecto que agregué

    ext { compileSdkVersion = 19 buildToolsVersion = "21" minSdkVersion = 10 targetSdkVersion = 19 }

  • En mis módulos tengo esto.

    // all modules compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion // in an application module defaultConfig { applicationId "com.something" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode appVersionCode versionName appVersionName }


OK, esta no es la respuesta, sino una solución temporal.

Según las notas de la versión de las herramientas de construcción de Gradle, este problema se solucionó en la versión 0.13.2 (2014/09/26)
Sin embargo, parece volver a ocurrir en 0.14.0 (2014/10/31)

Puede deshabilitar la tarea de fusión de manifiesto para construir su proyecto por el momento.
Agregue lo siguiente en su archivo build.gradle

android.applicationVariants.all { variant -> variant.processResources.manifestFile = file(''src/main/AndroidManifest.xml'') variant.processManifest.enabled=false }

Vea esta pregunta para referencia.


El problema se resolvió después de actualizar el AS a v0.9.1 y Gradle a 0.14.1.

Gracias chicos_

Actualizar

¡El problema aparece de nuevo!

Actualización 2

Aquí hay una solución para resolver este problema:

  1. Abra su proyecto con Android Studio 0.8.14 / Gradle build tools 0.13.2
  2. Construye tu proyecto.
  3. Cambie de nuevo a Android Studio 0.9.1 / Herramientas de compilación Gradle 0.14.1
  4. Gradlew assembleRelease funcionará ahora