android react-native react-native-android expo

La fusión de Manifest y Material de Android no se pudo realizar en react-native o ExpoKit



react-native-android (8)

28.0.0 ''android.support:appcompat-v7'' a 28.0.0 .

Pero trajo un error de la compilación.

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

Entonces me sale este error en mi Logcat:

Manifest merger failed

mi app.gradle:

configurations.all { resolutionStrategy.force ''com.android.support:design:28.0.0'' resolutionStrategy.force "com.android.support:support-v4:28.0.0" resolutionStrategy.force "com.android.support:support-media-compat:28.0.0" } ... dependencies { implementation ''com.android.support:multidex:1.0.1'' // Our dependencies implementation ''com.android.support:appcompat-v7:28.0.0'' implementation ''com.android.support:appcompat-v7:28.0.0'' }

¿Cómo lo arreglo?

Necesito tus soluciones.

Gracias de antemano.


  1. Intente actualizar a AndroidX ( Instruction ) y luego ejecute la npm update . Si algunos complementos no funcionan, descarte los cambios anteriores y vaya al segundo paso.

  2. Baja la versión del servicio de Google Play. En android/app/build.gradle cambiar

compile ''com.google.android.gms:play-services-<service_name>:+''

a

compile ''com.google.android.gms:play-services-<service_name>:16.0.0''

Así que en mi caso <sevice_name> era la location . Pero en el caso de alguien más, puede ser cualquier otro servicio de Google Play (como en la lista aquí http://www.androiddocs.com/google/play-services/setup.html ).

Así que se resolvió, pero el segundo paso es una solución temporal hasta que algunos complementos de RN se actualicen a AndroidX.


Agregue ''tools:replace="android:appComponentFactory"'' en su etiqueta AndroidManifest.xml dentro de la etiqueta <application>

Tu AmdroidManifest.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="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>


Agregue lo siguiente a su gradle.properties y luego limpie / reconstruya

googlePlayServicesVersion=16.1.0 firebaseVersion=17.6.0


De acuerdo con @Frank''s respuesta de @Frank''s la biblioteca utilizó services-gcm:+ como una dependencia, y la última versión de gcm causó este problema.

Y había usado :react-native-admob en mi proyecto. Así que solo cambio las siguientes líneas en android/app/build.gradle

Desde:

implementation project('':react-native-admob'')

A :

implementation(project(":react-native-admob"), { exclude group: "com.google.android.gms" }) implementation "com.google.android.gms:play-services-ads:16.0.0"


Después de pasar un día entero en este tema. Finalmente, he resuelto este problema.

Recibí ese error de la biblioteca react-native-device-info y react-native-fast-fast-image. Acabo de eliminar esa biblioteca del archivo package.json y luego instalo

"react-native-device-info": "^ 2.1.2", "react-native-fast-image": "^ 6.0.3" esta última versión

He usado la siguiente versión de Gradle

classpath ''com.android.tools.build:gradle:3.3.1''

He usado la siguiente versión de propiedades

distributionUrl=https/://services.gradle.org/distributions/gradle-5.1.1-all.zip

He usado las siguientes versiones

buildToolsVersion = "28.0.3" minSdkVersion = 16 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0"


Encontré una solución a través de mi búsqueda refiriéndome a la respuesta de @MehulSolanki.

añado

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

en mi en AndroidManifest.xml

y actualice com.android.tools.build:gradl:

dependencies { classpath ''com.android.tools.build:gradle:3.2.1'' }

Y agregue esto en su archivo gradle.properties

android.useAndroidX=true android.enableJetifier=true

ERROR: [TAG] Error al resolver la variable ''$ {animal.sniffer.version}''

ERROR: [TAG] Error al resolver la variable ''$ {junit.version}''

En caso de error anterior

  1. Archivo -> Invalidar cachés / reiniciar
  2. Construir -> Proyecto limpio

error: el paquete android.support.annotation no existe error: no se puede encontrar la clase de símbolo Anulable

En caso de error anterior

Añadir implementation ''androidx.annotation:annotation:1.1.0''

cambiar la import android.support.annotation.Nullable; => androidx.annotation.Nullable;

cambiar import android.support.annotation.NonNull; => androidx.annotation.NonNull;

La versión de compilación y la versión de destino deben ser 28.



La causa principal está relacionada con la migración a Androidx , el servicio de Google Play actualizado a androidX. Gracias a MR03web Este problema pertenece a react-native-device-info? La mejor opción es actualizar react-native-device-info usando

yarn upgrade [email protected] cd android && gradlew clean react-native run-android

o si no desea actualizar, debe excluir com.google.android.gms de la información de react-native-device-info like. Gracias

implementation(project(":react-native-device-info"), { exclude group: "com.google.android.gms" }) implementation "com.google.android.gms:play-services-gcm:16.0.0"