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.
-
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. -
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
- Archivo -> Invalidar cachés / reiniciar
- 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 actualización de
''react-native-device-info''
a la
version 2.1.2
corrigió el error para mí.
Consulte
github.com/facebook/react-native/issues/25294#issuecomment-503024749
En resumen: la biblioteca utilizó
"services-gcm:+"
como una dependencia, y la última versión de gcm causó este problema.
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"