android android-gradle build.gradle gradle-plugin

La fusión de Manifest y Material de Android falló



android-gradle build.gradle (26)

Tengo el siguiente grado

dependencies { implementation fileTree(dir: ''libs'', include: [''*.jar'']) implementation ''com.android.support:appcompat-v7:28.0.0-rc01'' implementation ''com.android.support.constraint:constraint-layout:1.1.2'' testImplementation ''junit:junit:4.12'' androidTestImplementation ''com.android.support.test:runner:1.0.2'' androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2'' implementation ''com.google.android.material:material:1.0.0-rc01'' }

Pero cuando quiero crear una aplicación, obtengo el siguiente registro:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91 is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory). Suggestion: add ''tools:replace="android:appComponentFactory"'' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

¡Bueno! Ve a manifestar y hazlo.

<?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="ru.chopcode.myapplication"> <application tools:replace="android:appComponentFactory" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> </application> </manifest>

Entonces me sale este error en mi Logcat:

Manifest merger failed with multiple errors, see logs that I have Linked with it


Soluciones simples - migrar a AndroidX

en gradle.properties , simplemente agregue a continuación dos scripts

implementation ''com.android.support:appcompat-v7:28.0.0-rc01''

¿Cuál fue la razón ↓

Todos los paquetes en AndroidX viven en un espacio de nombres consistente comenzando con la cadena androidx. Los paquetes de la biblioteca de soporte se han asignado a los paquetes correspondientes de androidx. *. Para un mapeo completo de todas las clases antiguas y artefactos de compilación a los nuevos, vea la página Refactorización de paquetes.

Por favor vea la página de Refactorización de Paquetes.


Razón del fracaso

Está utilizando una biblioteca de materiales que forma parte de AndroidX . Si no conoce AndroidX, lea esta respuesta .

Una aplicación debe usar AndroidX o bibliotecas antiguas de soporte de Android. Por eso te enfrentaste a este problema.

Por ejemplo -

En tu gradle, estás usando

  • com.android.support:appcompat-v7 (parte de la antigua - Biblioteca de soporte de Android--)
  • com.google.android.material:material (Parte de AndroidX) (artefacto de compilación de AndroidX de com.android.support:design )

Solución

Entonces, la solución es usar AndroidX o la antigua Biblioteca de soporte. Recomiendo usar AndroidX, ya que Android no actualizará las bibliotecas de soporte después de la versión 28.0.0. Ver las notas de la versión de la biblioteca de soporte.

Simplemente migre a AndroidX. Aquí está mi respuesta detallada para migrar a AndroidX. Estoy poniendo aquí los pasos necesarios de esa respuesta.

Antes de migrar, se recomienda encarecidamente realizar una copia de seguridad de su proyecto.

Proyecto existente

  • Android Studio> Menú Refactor> Migrar a AndroidX ...
  • Se analizará y se abrirá la ventana del refractor en la parte inferior. Aceptar los cambios a realizar.

Nuevo proyecto

Pon estas banderas en tu gradle.properties

android.enableJetifier=true android.useAndroidX=true

Revise las asignaciones de @ Library para un paquete igual de AndroidX .

Check @ Página oficial de Migrate to AndroidX

¿Qué es Jetifier?



Añade estas líneas dentro del archivo AndroidManifest.xml.

herramientas: reemplazar = "android: appComponentFactory" android: appComponentFactory = "whateverString"


Cambie proguardFile en build.gradle (Module: app) a lo siguiente

proguardFiles getDefaultProguardFile(''proguard-android-optimize.txt''), ''proguard-rules.pro''

en lugar de

proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''

Esto funciono para mi


Crea un nuevo proyecto y compara tus archivos build.gradle y reemplaza todos

configurations.all { resolutionStrategy.force ''com.android.support:support-v4:28.0.0'' // the above lib may be old dependencies version }

y otras dependencias con las mismas que estaban en un nuevo proyecto en algo así

compileSdkVersion 28 buildToolsVersion ''28.0.3'' targetSdkVersion 28

Y luego arreglaron las importaciones para usar androidx en archivos kotlin.


En mi caso no quise pasar a AndroidX. Y tengo que revisar mis últimos cambios. Me di cuenta de que el nuevo componente era -> lottie 2.8.0 Así que lo rebajé a: implementación ''com.airbnb.android:lottie:2.7.0''

Espero que esto pueda ayudar a alguien.


En mi caso, esto está funcionando perfectamente ... He añadido a continuación dos códigos de línea dentro del archivo de manifiesto

tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"

El crédito va a esta respuesta .


En primer lugar, asegúrese de agregar esta línea en la etiqueta de manifiesto

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

Luego agrega herramientas para reemplazar tu sugerida en el estudio de Android.


Este problema ocurrió principalmente para dependencias antiguas .

Hay 2 soluciones:

El primero:

Actualice todas las old dependencies y ClassPaths desde archivos de Project level gradle .

<application android:name=".YourApplication" android:appComponentFactory="AnyStrings" tools:replace="android:appComponentFactory" android:icon="@drawable/icon" android:label="@string/app_name" android:largeHeap="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar">

Segundo:

Tu proyecto Migrate to AndroidX

Desde el menú de Android Studio -> Refanctor -> Migrate to AndroidX

Gracias, avísame si alguien te ayuda con esta respuesta.


Finalmente, encontré una solución rápida y fácil agregando dos líneas en el archivo android/build.gradle .

googlePlayServicesVersion = "16.+" firebaseVersion = "17.6.0"

Por favor, siga este 100% correcto.


Me encontré con el mismo error cuando intento agregar la biblioteca Kotlin-KTX a mi proyecto.

Intento la migración de AndroidX, y el problema se solucionó!



Sólo tienes que eliminar la dependencia de android.support

implementation ''com.android.support:appcompat-v7:28.0.0-rc01''

Cotización de las directrices de material

Si aún no desea cambiar a los nuevos paquetes androidx y com.google.android.material, puede usar los Componentes de materiales a través de la dependencia com.android.support:design:28.0.0-alpha3.

Nota: No debe usar las aplicaciones com.android.support y com.google.android.dependencies en su aplicación al mismo tiempo.

Sólo eliminar esta dependencia funciona bien

dependencies { implementation fileTree(dir: ''libs'', include: [''*.jar'']) implementation ''com.google.android.material:material:1.0.0-beta01'' implementation ''com.android.support.constraint:constraint-layout:1.1.2'' testImplementation ''junit:junit:4.12'' androidTestImplementation ''com.android.support.test:runner:1.0.2'' androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2'' }

Aquí está el ejemplo de dependencias completas

android.useAndroidX=true android.enableJetifier=true


Si no tiene intención de migrar a AndroidX, siga los pasos a continuación.

  1. En la aplicación de gradlew tipo de terminal: dependencias
  2. Después de que se muestren las dependencias en la ventana, presione Ctrl + f y escriba androidX
  3. Encontrará todas las dependencias que utilizan androidx lib internamente. Es posible que tenga que rebajarlo o usar una alternativa para asegurarse de que ya no use androidX libs internamente.

Sigue estos pasos:

  • Ir a Refactor y hacer clic en Migrar a AndroidX
  • Haga clic en Refactorizar

Simplemente cambie "rc01" en la primera y última línea dentro de las dependencias a "alpha1" Esto está funcionando para mí


Todo lo que hice fue ir a la opción "Refactor" en el menú superior.

Luego seleccione "Migrar a AndroidX"

Aceptar para guardar el proyecto como un archivo zip.

Actualice Android Studio y Gradle para asegurarse de que no se encuentren problemas.


Tuve el mismo error al trabajar con Groupie (implementación ''com.xwray: groupie: 2.3.0'')

Lo resolví cambiando la versión a (implementación ''com.xwray: groupie: 2.1.0'')


Tuve este mismo problema durante tres días.

Es como Android quiere que usemos Kotlin o AndroidX, están eliminando Android.

Pero así lo resolví.

  • Migré mi proyecto a AndroidX. Esto no trae ningún error relacionado con este problema en cuestión, actualiza los archivos respectivamente. No es necesario cambiar ningún método, clase o nombre de variable en su aplicación.

NB: debe utilizar las últimas Bibliotecas (archivo build.grudle) en la última versión estable de Android Studio 3.4.1



simplemente agregue estas dos líneas de código a su archivo Manifest

tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"


1. Agregó estos códigos al final de su aplicación / build.gradle:

implementation ''com.android.support:appcompat-v7:27.1.1'' implementation ''com.android.support.constraint:constraint-layout:1.1.1''

2. Versión modificada de sdk y herramientas a 28:

implementation ''androidx.appcompat:appcompat:1.0.0-alpha3'' implementation ''androidx.constraintlayout:constraintlayout:1.1.2'' implementation ''androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'' androidTestImplementation ''androidx.test:runner:1.1.0-alpha3'' androidTestImplementation ''androidx.test.espresso:espresso-core:3.1.0-alpha3'' implementation ''androidx.core:core-ktx:1.0.0-alpha3''

3.En su archivo AndroidManifest.xml, debe agregar dos líneas:

classpath ''com.android.tools.build:gradle:3.3.1'' classpath ''com.google.gms:google-services:4.2.0''

O simplemente

  • Ir a Refactor (Estudio -> Menú -> Refactor)
  • Haga clic en Migrar a AndroidX. esta funcionando
  • esta funcionando.

Solo si no quieres usar androidx

Así que en mi caso estoy usando la biblioteca que estaba usando androidx pero no estoy usando androidx, así que cuando resolví esa versión de la biblioteca, el problema se resolvió.

En mi caso:

implementation ''com.github.turing-tech:MaterialScrollBar:13.+''

la biblioteca mencionada anteriormente presenta el problema 13. + obtendrá automáticamente una nueva versión de la biblioteca que utiliza androidx. Así que bajé la versión de la biblioteca a:

implementation ''com.github.turing-tech:MaterialScrollBar:13.2.5''

Y el problema se resolvió.


cambiar sus dependencias build.gradle en

implementation ''com.android.support:appcompat-v7:28.0.0-alpha1''

o

implementation ''com.android.support:appcompat-v7:28.0.0-alpha1''


  • Ir a Refactor ( Image )
  • Haga clic en Migrar a AndroidX. esta funcionando
  • esta funcionando.