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 decom.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 partir de Android P, las bibliotecas de soporte se han movido a AndroidX
Por favor, haga un refactor para sus libs de esta página .
https://developer.android.com/topic/libraries/support-library/refactor
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 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.
Para resolver este problema, recomendaría definir explícitamente la versión para las variables ext en
android/build.gradle
en su proyecto raíz.
implementation ''com.android.support:appcompat-v7:28.0.0-alpha3''
referencia https://github.com/zo0r/react-native-push-notification/issues/1109#issuecomment-506414941
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.
- En la aplicación de gradlew tipo de terminal: dependencias
- Después de que se muestren las dependencias en la ventana, presione Ctrl + f y escriba androidX
- 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
Tuve un problema similar.
Se agregaron dos líneas en el archivo
gradle.properties
:
android.useAndroidX=true
android.enableJetifier=true
Estas dos líneas resolvieron automáticamente mis conflictos de dependencia entre los archivos de Google y las dependencias de terceros. Aquí está el enlace a seguir: https://developer.android.com/topic/libraries/support-library/androidx-overview#new-project
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.