android - xde - react native wikipedia




Il materiale Android e la fusione manifest di appcompat non sono riusciti a reagire nativo o ExpoKit (6)

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

Ma ha portato un errore dalla build.

Attribute [email protected] 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.

Quindi ricevo questo errore nel mio logcat:

Manifest merger failed

la mia 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'
}

come lo aggiusto?

Ho bisogno delle tue soluzioni.

Grazie in anticipo.


  1. Prova ad aggiornare ad AndroidX ( Instruction ) e poi esegui npm update . Se alcuni plug-in sono danneggiati, elimina le modifiche precedenti e vai al secondo passaggio.

  2. Esegui il downgrade della versione del servizio di Google Play. Nella modifica di android/app/build.gradle

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

a

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

Quindi nel mio caso <sevice_name> era la location . Ma in qualcun altro caso potrebbe trattarsi di qualsiasi altro servizio di Google Play (come nella lista qui http://www.androiddocs.com/google/play-services/setup.html ).

Quindi è stato risolto, ma il secondo passaggio è una correzione temporanea fino a quando alcuni plugin RN si aggiorneranno ad AndroidX.


Aggiungi 'tools:replace="android:appComponentFactory"' nel tuo AndroidManifest.xml all'interno del tag <application>

Il tuo 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>


Dopo aver trascorso un'intera giornata su questo argomento. Infine, ho risolto questo problema.

Ho ricevuto quell'errore da react-native-device-info e react-native-fast-image library. Ho appena rimuovere quella libreria dal file package.json e quindi installare

"react-native-device-info": "^ 2.1.2", "react-native-fast-image": "^ 6.0.3" questa ultima versione

Ho usato sotto la versione gradle

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

Ho usato sotto la versione delle proprietà

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

Ho usato sotto le versioni

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

Ho trovato una soluzione attraverso la mia ricerca facendo riferimento alla risposta di @MehulSolanki.

aggiungo

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

nel mio su AndroidManifest.xml

e aggiorna com.android.tools.build:gradl:

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

E aggiungilo nel tuo file gradle.properties

android.useAndroidX=true
android.enableJetifier=true

ERRORE: [TAG] Impossibile risolvere la variabile '$ {animal.sniffer.version}'

ERRORE: [TAG] Impossibile risolvere la variabile '$ {junit.version}'

In caso di errore sopra

  1. File -> Invalida cache / riavvia
  2. Build -> Pulisci progetto

errore: pacchetto android.support.annotation non esiste errore: impossibile trovare la classe simbolo Nullable

In caso di errore sopra

Aggiungi implementation 'androidx.annotation:annotation:1.1.0'

cambia import android.support.annotation.Nullable; => androidx.annotation.Nullable;

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

La versione compilata e la versione di destinazione dovrebbero essere 28.


La causa principale è la migrazione correlata ad Androidx , il servizio di riproduzione di Google aggiornato ad AndroidX Grazie a MR03web Questo problema appartiene a react-native-device-info? l'opzione migliore è l'aggiornamento di react-native-device-info usando

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

oppure se non desideri eseguire l'upgrade, devi escludere com.google.android.gms dalle react-native-device-info come questo. Grazie

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

Secondo @Frank's risposta di @Frank's la libreria ha utilizzato services-gcm:+ come dipendenza e l'ultima versione di gcm ha causato questo problema.

E avevo usato :react-native-admob nel mio progetto. Quindi ho appena modificato le seguenti linee in android/app/build.gradle

A partire dal:

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"




expo