React-native: plusieurs bibliothèques avec le nom de package 'com.google.android.gms.license'

Créé le 21 mars 2018  ·  162Commentaires  ·  Source: facebook/react-native

Environnement

Système d'exploitation : macOS Sierra 10.12.6
Nœud : 6.10.2
Fil : 1.3.2
npm: 3.10.10
Gardien : 4.9.0
Xcode : introuvable
Android Studio : 3.0 AI-171.4443003
Packages : (recherché => installé)
réagir : 16.2.0 => 16.2.0
réactif natif : 0,53,3 => 0,53,3

Étapes pour reproduire

Comportement prévisible

Comportement réel

Android Stale

Commentaire le plus utile

Cela a fonctionné pour moi. Modifier /android/build.gradle .(pas /android/app/build.gradle )

Vous devez vérifier quels modules gms sont requis pour votre projet. Vous pouvez trouver les modules gms requis dans chaque fichier build.gradle de chaque plugin natif qui utilise gms.

Dans mon cas, je devais vérifier les 4 prochains plugins. react-native-admob , react-native-maps , react-native-onesignal , react-native-google-sign-in . Les noms de module peuvent être différents selon le projet.

ou, vous pouvez vérifier les noms de modules requis en exécutant la commande gradlew app:dependencies .(exécuté dans le répertoire Android)

// This is not need to be 11.8.0. Use your required version.
def googlePlayServicesVersion = '11.8.0'

allprojects {
    repositories {
                ...
        configurations.all {
            resolutionStrategy {
                // react-native-admob
                force "com.google.android.gms:play-services-ads:$googlePlayServicesVersion"
                // react-native-maps
                force "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-maps:$googlePlayServicesVersion"
                // react-native-onesignal
                force "com.google.android.gms:play-services-gcm:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-analytics:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
                // react-native-google-sign-in
                force "com.google.android.gms:play-services-auth:$googlePlayServicesVersion"
            }
        }
                ...
    }
}

Tous les 162 commentaires

Merci d'avoir posté ça ! Il semble que votre problème manque certaines informations nécessaires. Pouvez-vous exécuter react-native info et modifier votre problème pour inclure ces résultats dans la section Environnement ?

Merci pour vos contributions.

pareil ici.
Hier, j'ai pu construire mon projet, mais aujourd'hui matin, tout à coup, il a échoué.
Je n'ai pas du tout changé mon code.

Peut-être que c'est lié à la nouvelle version de Google Play services 12.0.0 (sortie le 20 mars 2018)

il m'est arrivé la même chose mais avec cordova, sans avoir fait de modification à mon code

Environnement:
Système d'exploitation : macOS Sierra 10.12.6
Nœud : 6.10.2
Fil : 1.3.2
npm: 3.10.10
Gardien : 4.9.0
Xcode : introuvable
Android Studio : 3.0 AI-171.4443003

Packages : (recherché => installé)
réagir : 16.2.0 => 16.2.0
réactif natif : 0,53,3 => 0,53,3

L'erreur arrive-t-elle pour un module spécifique ? Dans le mien, j'avais la bibliothèque react-native-camera qui l'utilisait dans son propre build.gradle, (sous Gradle Scripts dans Android Studio)

dependencies {
  ....
  compile 'com.google.android.gms:play-services-vision:+'
  ....
}

Ce qui l'amenait à utiliser la dernière version non prise en charge, ce qui a soulevé ce problème.
Changez simplement cette ligne en compile 'com.google.android.gms:play-services-vision:11.6.0'
ou la version compatible la plus récente pour vous.

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ':react-native-device-info:processReleaseResources'.
    > Erreur : plus d'une bibliothèque avec le nom de package « com.google.android.gms.license »

J'ai subi le même problème. C'est OK l'après-midi dernier, mais erreur de build ce matin.
ÉCHEC : la génération a échoué avec une exception.

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ':react-native- device -

Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

Mon environnement comme ci-dessous :
réaction-native-cli: 2.0.1
natif réactif : 0.44.3
npm : 5.5.1
OS : Windows 10

C'est ce que tu veux chercher

Changez ce + en 11.6.0 dans node_modules/react-native-device-info/android/build.gradle

Comme solution temporaire bien sûr

Il y a un problème pertinent auquel vous pouvez vous référer.

je suis confronté au même problème

* What went wrong:
Execution failed for task ':react-native-mauron85-background-geolocation:processReleaseResources'.
> Error: more than one library with package name 'com.google.android.gms.license'

Environnement:
Système d'exploitation : Linux 4.13
Nœud : 6.11.4
Fil : introuvable
npm: 3.10.10
Gardien : introuvable
Xcode : N/A
Android Studio : introuvable

Packages : (recherché => installé)
réagir : 16.3.0-alpha.2 => 16.3.0-alpha.2
réactif natif : 0,54,2 => 0,54,2

D'un autre côté, j'ai un projet très similaire (c'est fondamentalement le même) mais avec react-native 0.48.4 et dans ce cas cela fonctionne bien.

Je viens de corriger en ajoutant la ligne ci-dessous dans gradle.properties

googlePlayServicesVersion=11.6.0 .

compiler 'com.google.android. gms:play-services-vision :11.8.0'
11.8.0 est OK

Quand j'ai essayé ceci :

Je viens de corriger en ajoutant la ligne ci-dessous dans gradle.properties
googlePlayServicesVersion=11.6.0 .

J'ai eu:

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > A problem occurred configuring project ':react-native-device-info'.
      > Could not resolve all dependencies for configuration ':react-native-device-info:_debugPublishCopy'.
         > Could not find com.google.android.gms:play-services-gcm:11.6.0.
           Searched in the following locations:
           ...

Et quand j'ai essayé ceci :

compiler 'com.google.android. gms:play-services-vision :11.8.0'
11.8.0 est OK

J'ai eu:

* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApkCopy'.
   > Could not find com.google.android.gms:play-services-vision:11.8.0.
     Searched in the following locations:
     ...

@justcarthy Ouais, ça marche.

ressource trouvée qui correspond au nom donné : attr ' android:keyboardNavigationCluster '. j'ai cette erreur

@augusto-altman Vous pouvez essayer celui-ci .

Dans mon cas, j'ai réussi à le résoudre en alignant toutes les versions de com.google.firebase dans 'platforms/android/project.properties' sur une ancienne version telle que ci-dessous :

cordova.system.library.4=com.google. firebase:firebase-core :11.+
cordova.system.library.5=com.google. firebase:firebase-messages :11.+
cordova.system.library.6=com.google. firebase:firebase-crash :11.+
cordova.system.library.7=com.google. firebase:firebase-config :11.+
cordova.system.library.8=com.google.android. gms:play-services-location :11.+
cordova.system.library.9=com.google.android. gms:play-services-auth :11.+
cordova.system.library.10=com.google.android. gms:play-services-identity :11.+

Ce qui précède a été modifié en : 11.+ au lieu de : +

De plus, tout inclut, par exemple (cordova-plugin-firebase/android-build.gradle) doit également être modifié comme ci-dessus. Cela peut être une solution temporaire jusqu'à ce que vous parveniez à comprendre ce qui ne va pas avec la version 12.0.0.

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ':react-native- google-signin:processReleaseResources '.

    Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

  • Essayer:
    Exécutez avec l'option --stacktrace pour obtenir la trace de la pile. Exécutez avec l'option --info ou --debug pour obtenir plus de sorties de journal.

ÉCHEC DE CONSTRUCTION

Je corrige l'erreur en changeant compile 'com.google.android.gms:play-services-auth:+' en compile 'com.google.android.gms:play-services-auth:11.6.0' sur node_modules/react-native-google-signin/build.gradle

Ça marche pour moi.

node_modules/react-native-device-info/android/build.gradle :
dépendances {
compiler 'com.facebook. réagir:réagir-natif :+'
compiler 'com.google.android. gms:play-services-gcm :11.8.0' // mise à jour par moi le 20180321
//compiler 'com.google.android. gms:play-services-gcm :+'
}

Cela a fonctionné pour moi. Modifier /android/build.gradle .(pas /android/app/build.gradle )

Vous devez vérifier quels modules gms sont requis pour votre projet. Vous pouvez trouver les modules gms requis dans chaque fichier build.gradle de chaque plugin natif qui utilise gms.

Dans mon cas, je devais vérifier les 4 prochains plugins. react-native-admob , react-native-maps , react-native-onesignal , react-native-google-sign-in . Les noms de module peuvent être différents selon le projet.

ou, vous pouvez vérifier les noms de modules requis en exécutant la commande gradlew app:dependencies .(exécuté dans le répertoire Android)

// This is not need to be 11.8.0. Use your required version.
def googlePlayServicesVersion = '11.8.0'

allprojects {
    repositories {
                ...
        configurations.all {
            resolutionStrategy {
                // react-native-admob
                force "com.google.android.gms:play-services-ads:$googlePlayServicesVersion"
                // react-native-maps
                force "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-maps:$googlePlayServicesVersion"
                // react-native-onesignal
                force "com.google.android.gms:play-services-gcm:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-analytics:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
                // react-native-google-sign-in
                force "com.google.android.gms:play-services-auth:$googlePlayServicesVersion"
            }
        }
                ...
    }
}

#PlayServicesGate

comment le résoudre? à l'aide

@ZKeLin Je viens de com.google.firebase et com.google.android de android/app/build.gradle :

...
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.firebase:firebase-core:11.0.0'
    compile 'com.google.firebase:firebase-crash:11.0.0'
    compile 'com.google.firebase:firebase-analytics:11.0.0'
    compile 'com.google.firebase:firebase-messaging:11.0.0'
    compile 'com.google.android.gms:play-services-base:11.0.0'
    compile 'com.google.android.gms:play-services-maps:11.0.0'
    compile 'com.google.android.gms:play-services-wallet:11.0.0'
    ...
}

et mettez-les dans android/build.gradle

allprojects {
    repositories {
        ...
        configurations.all {
            // #PlayServicesGate — March, 20 2018
            resolutionStrategy {
                force 'com.google.firebase:firebase-core:11.0.0'
                force 'com.google.firebase:firebase-crash:11.0.0'
                force 'com.google.firebase:firebase-analytics:11.0.0'
                force 'com.google.firebase:firebase-messaging:11.0.0'
                force 'com.google.android.gms:play-services-base:11.0.0'
                force 'com.google.android.gms:play-services-maps:11.0.0'
                force 'com.google.android.gms:play-services-wallet:11.0.0'
            }
        }
    }
}

Utilisez vos propres versions à partir de android/app/build.gradle

Je ne peux pas installer ...play-services-*:11.8.0 . Pourquoi? duo à mon studio android est trop vieux?

J'ai également été confronté au même problème dans le développement natif de réaction.

je viens d'utiliser les réponses @isnifer et @nopedev ..

Cela a fonctionné pour moi.

Avant l'édition

configurations.all {

        resolutionStrategy.eachDependency { DependencyResolveDetails details ->

            def overrideVersion = versionOverrides[details.requested.group + ":" + details.requested.name]

            if (overrideVersion != null && details.requested.version != overrideVersion) {
                println("********************************************************")
                println("Overriding dependency ${details.requested.group}:${details.requested.name} version ${details.requested.version} --> $overrideVersion")
                details.useVersion overrideVersion
                println("********************************************************")
            }
        }
    }

Après

configurations.all {

        resolutionStrategy{

            force "com.google.android.gms:play-services-ads:11.8.0"
            force "com.google.android.gms:play-services-gcm:11.8.0"
            force "com.google.android.gms:play-services-analytics:11.8.0"
            force "com.google.android.gms:play-services-location:11.8.0"

            eachDependency { DependencyResolveDetails details ->

            def overrideVersion = versionOverrides[details.requested.group + ":" + details.requested.name]

            if (overrideVersion != null && details.requested.version != overrideVersion) {
                println("********************************************************")
                println("Overriding dependency ${details.requested.group}:${details.requested.name} version ${details.requested.version} --> $overrideVersion")
                details.useVersion overrideVersion
                println("********************************************************")
            }
            }
        }
    }

Le bord qui saigne vraiment saigne pour moi maintenant

J'ai aussi un problème avec la connexion google, j'ai résolu ce problème. modifier \node_modules\react-native-google-signin\android\build.gradle

compile 'com.google.android.gms:play-services-auth:+
changer + en 11.6.0

+1

Les suggestions de

Éditer

android/build.gradle

travaille pour moi

...

allprojects {
    repositories {
        ...
        configurations.all {
            resolutionStrategy {
                force "com.google.android.gms:play-services-auth:11.8.0"
            }
        }
    }
}

j'ai eu

Qu'est ce qui ne s'est pas bien passé:
L'exécution a échoué pour la tâche ':react-native- device -
Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

et

Qu'est ce qui ne s'est pas bien passé:
L'exécution a échoué pour la tâche ':react-native-push-notification- info:processReleaseResources '.
Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

et je les ai résolus en changeant en node-modules/react-native-device-info/android/build.gradle

compile 'com.google.android.gms:play-services-gcm:11.6.0'

Mais maintenant j'ai un plus générique

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ': app:processReleaseResources '.
    Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

Comment résoudre cela ??

THX

même problème
Environnement:
Système d'exploitation : macOS High Sierra 10.13.4
Nœud : 8.9.4
Fil : 1.3.2
npm : 5.6.0
Gardien : 4.9.0
Xcode : Xcode 9.1 Build version 9B55
Android Studio : 3.0 AI-171.4443003

Packages : (recherché => installé)
réagir : ^16.3.0-alpha.1 => 16.3.0-alpha.1
réactif natif : 0,54,2 => 0,54,2

ÉCHEC : la génération a échoué avec une exception.

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ' :react-native- camera:processReleaseResources '.

    Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

  • Essayer:
    Exécutez avec l'option --stacktrace pour obtenir la trace de la pile. Exécutez avec l'option --info ou --debug pour obtenir plus de sorties de journal.

J'obtenais l'erreur suivante lors de l'exécution de mon application (react-native run-android)

* What went wrong:
Execution failed for task ':react-native-device-info:processReleaseResources'.
> Error: more than one library with package name 'com.google.android.gms.license'

J'ai utilisé la solution de contournement @indrawanadjie et cela a fonctionné pour moi...

Je suis allé à node_modules/react-native-device-info/android/build.gradle
Dans la ligne
compile 'com.google.android.gms:play-services-auth:+
changer + en 11.6.0

Maintenant, cela ne devrait être qu'une solution rapide...

Si quelqu'un utilise react-native-camera, accédez à node-modules/react-native-camera/android et modifiez build.gradle

changer de:

dependencies{ .... compile 'com.google.android.gms:play-services-vision:+ }

à:

dependencies{ .... compile 'com.google.android.gms:play-services-vision:11.8.0 }

comme solution de contournement temporaire

Utilisation du plugin cordova firebase pour obtenir ce problème. Une solution là-dessus ????

issue

Essayez de mettre à niveau le plugin gradle vers 3.0.1, cela aidera https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html
Vous pouvez également rencontrer des problèmes en raison de la limitation dex, multiDexEnabled true peut aider

Eh bien, c'est juste génial. L'ensemble de l'écosystème abattu par un "+" dans les dépendances dépendances dépendances de quelqu'un.

je change toutes les dépendances en 12.0.0 mais firebase affiche une erreur en raison de dépendances internes

J'avais besoin de changer :

compile "com.google.android.gms:play-services-wallet:11.8.0" en android/app/build.gradle

et

compile 'com.google.android.gms:play-services-analytics:11.8.0' en node_modules/react-native-google-analytics-bridge/android/build.gradle

et ça marche maintenant

@AndrejGajdos vous avez raison mais ce n'est pas une solution pour changer quelque chose dans node_modules cela fonctionne en local mais pas dans une nouvelle version

dans ionic // ajoutez ceci dans platform/build.gradle/
tous les projets {
référentiels {
jcenter()
maven {
URL " https://maven.google.com "
}
configurations.all {
stratégie de résolution {
// Ajout de force (11.4.0 est la version que vous souhaitez utiliser)
forcer 'com.google. firebase:firebase-messages :11.4.0'
forcer 'com.google. firebase:firebase-core :11.4.0'
forcer 'com.google.android. gms:play-services-gcm :11.4.0'
}
}
}
}

travaille pour moi

@jigaryadav correct.
@AndrejGajdos, votre solution ne fonctionnera pas sur CI.
Excluez simplement les mauvais deps des modules dans android/app/build.gradle pour utiliser vos propres versions de deps, par exemple, voici notre configuration sur Tipsi :

dependencies {
    ...
    compile(project(':react-native-firebase-crash-report')) {
        exclude group: 'com.google.firebase', module: 'firebase-core'
        exclude group: 'com.google.firebase', module: 'firebase-crash'
    }
    compile(project(':react-native-firebase-analytics')) {
        exclude group: 'com.google.firebase', module: 'firebase-core'
        exclude group: 'com.google.firebase', module: 'firebase-analytics'
    }
    compile(project(':react-native-fcm')) {
        exclude group: "com.google.firebase"
    }
}

:processDebugResources
ÉCHOUÉ

ÉCHEC : la génération a échoué avec une exception.
.....

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ':processDebugResources'.
    > Erreur : plus d'une bibliothèque avec le nom de package « com.google.android.gms.license »

[ERREUR] Une erreur s'est produite lors de l'exécution de cordova run android (code de sortie 1).

et Mon fichier project.properties comprend :

cible=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-plugin-firebase/richer-build.gradle
cordova.system.library.1=com.google. gms:google-services :+
cordova.system.library.2=com.google.android. gms:play-services-tagmanager :+
cordova.system.library.3=com.google. firebase:firebase-core :+
cordova.system.library.4=com.google. firebase:firebase-messagerie :+
cordova.system.library.5=com.google. firebase:firebase-crash :+
cordova.system.library.6=com.google. firebase:firebase-config :+

J'ai essayé de changer cordova.system.library.3=com.google. firebase:firebase-core :+ à cordova.system.library.3=com.google. firebase:firebase-core :11.6.0
Rien ne fonctionne pour moi.

mes infos sur le projet ionique :

packages cli : (C:\Users\ADT-LPT88\AppData\Roaming\npm\node_modules)
@ionic/cli-utils : 1.13.1
ionique (Ionic CLI) : 3.13.1
forfaits mondiaux :
cordoue (Cordova CLI) : 7.1.0
forfaits locaux :
@ionic/app-scripts : 3.1.5
Plateformes Cordova : Android 6.3.0
Cadre ionique : ionique-angulaire 3.9.2
Système:
Outils SDK Android : 26.1.1
Nœud : v6.11.3
npm : 3.10.10
OS : Windows 7
Divers :
backend : pro

des idées?

j'ai aussi eu la même erreur j'ai utilisé l'extrait de code
configurations.all {
stratégie de résolution {
forcer 'com.google.android. gms:play-services-vision :10.2.0'
force 'com.android. support:exifinterface :27.+'
}
}
dans android/build.gradle
maintenant la construction a réussi mais a obtenu une erreur comme impossible de lire la propriété Aspect de non défini

chaque patch fonctionne bien pour l'instant mais je suis bloqué dans cette exécution. Est-ce que quelqu'un sait quel service utilise un signal ?

Execution failed for task ':react-native-onesignal:processReleaseResources'

Erreur : cmd : La commande a échoué avec le code de sortie 1 Sortie d'erreur :
ÉCHEC : la génération a échoué avec une exception.

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ':processDebugResources'.

    Erreur : plusieurs bibliothèques avec le nom de package « com.google.android.gms.license »

  • Essayer:
    Exécutez avec l'option --stacktrace pour obtenir la trace de la pile. Exécutez avec l'option --info ou --debug pour obtenir plus de sorties de journal.

@Lifesoftware, il y a tellement de réponses à votre erreur

@isnifer merci mec

@isnifer Lequel ??????

J'essaye toutes les réponses mais ça ne marche toujours pas.

@Lifesoftware affiche toutes les informations de débogage

@Lifesoftware c'est simple car je me

dans : android/build.gradle

configurations.all {
            resolutionStrategy {
              force "com.google.android.gms:play-services-gcm:11.8.0"
              .... your other dependencies
            }
        }

cela a fonctionné pour moi car je suis resté bloqué dans un signal mais @isnifer m'a aidé et maintenant tout fonctionne bien

obtenir la même erreur

  • Qu'est ce qui ne s'est pas bien passé:
    L'exécution a échoué pour la tâche ':processDebugResources'.
    > Erreur : plus d'une bibliothèque avec le nom de package « com.google.android.gms.license »

c'est un projet cordova
j'utilise ces plugins google
cordova-plugin-firebase 0.1.25 "Google Firebase Plugin"
cordova-plugin-geolocation 2.4.3-dev "Géolocalisation"
cordova-plugin-google-analytics 1.7.4 "Google Universal Analytics Plugin"
cordova-plugin-googleplus 5.1.1 "Google SignIn"

sa fonctionnait correctement.
du coup ça ne marche plus

j'ai essayé de changer la version en 11.0.0 dans build.gradle mais cela ne fonctionne pas pour moi

@Lifesoftware

avez-vous une solution pour cela ???

@jigaryadav s'il vous plaît vérifier que
j'utilise le plugin firbase.

configurations.all {
stratégie de résolution {
force 'com.android. prise en charge : support-v4 : 24.0.0'
forcer 'com.google.android. gms:play-services-vision :10.2.0'
force 'com.android. support:exifinterface :27.+'

}
}

@Lifesoftware utilisez-vous react-native-firebase ?

@smayur00

Toujours confronté au même problème

@jigaryadav

Pas de plugin cordova (cordova-plugin-firebase)

Je suis également confronté au même problème, maintenant incapable de construire apk.

Mon build.gradle contient,

compiler le projet(':react-native-orientation')
compiler le projet(':react-native-share')
compile(project(':react-native-firebase')) {
transitif = faux
}
compiler "com.google. firebase:firebase-invites :11.8.0"
compiler le projet(':react-native-google-analytics-bridge')
compiler le projet(':react-native-vector-icons')
compiler le projet(':react-native-send-intent')
compiler le projet(':react-native-onesignal')
compile(project(':react-native-maps')){
groupe d'exclusion : 'com.google.android.gms', module : 'play-services-base'
groupe d'exclusion : 'com.google.android.gms', module : 'play-services-maps'
}
compiler 'com.google.android. gms:play-services-base :11.8.0'
compiler 'com.google.android. gms:play-services-maps :+'
compiler le projet(':react-native-facebook-account-kit')
compiler le projet (':react-native-code-push')
compiler fileTree(dir: "libs", inclure: ["*.jar"])
compiler "com.android. support:appcompat-v7 :23.0.1"
compiler "com.facebook. react : react

Des suggestions s'il vous plaît

@Lifesoftware désolé aucune idée du plugin de Cordova mais la logique est la même, je suppose que vous devez trouver pour Cordova

@jigaryadav Pouvez-vous partager votre fichier build.gradle

De nombreuses bibliothèques migrent vers le nouveau mécanisme « Propriétés de configuration de Gradle ». Vérifiez vos bibliothèques associées pour voir si elles le prennent en charge.

ici @Lifesoftware

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.google.gms:google-services:3.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven {
            url 'https://maven.google.com'
        }
        configurations.all {
            resolutionStrategy {
            // react-native-onesignal
              force "com.google.android.gms:play-services-gcm:11.8.0"
              force "com.google.android.gms:play-services-analytics:11.8.0"
              force "com.google.android.gms:play-services-location:11.8.0"
              // react-native-google-sign-in
              force "com.google.android.gms:play-services-auth:11.8.0"

            }
        }
    }
}

@jigaryadav J'utilise
Cela provoque cette erreur.
Savez-vous quelle ligne de force est requise sur « build.gradle » ?
Merci.

@sarykemmoun Voir mon commentaire ci-dessus pour react-native-firebase et firebaseVersion

@sarykemmoun tout d'abord, voir le commentaire https://github.com/facebook/react-native/issues/18479#issuecomment-374938507 .
Êtes-vous sûr que react-native-firebase provoque une erreur ? On dirait qu'ils ont une version fixe

@sarykemmoun comment définir cette variable voir ici — https://github.com/facebook/react-native/issues/18479#issuecomment -374849967

Tous ceux qui écoutent sur ce fil doivent effectuer les opérations suivantes.

Comme recommandé par le document Android Developer Gradle Tips & Tricks (voir « Configurer les propriétés à l'échelle du projet »), si l'application d'hébergement définit les propriétés suivantes dans leur racine build.gradle , les modules homologues (comme react-native-maps , react-native-firebase , react-native-device-info , etc) peut aligner ses dépendances comme demandé :

📂 android/build.gradle

buildscript {...}

allprojects {...}

/**
 * Project-wide gradle configuration properties for use by all modules
* NOTE:  Set your versions here as desired using the existing values defined in your
* android/app/build.gradle
*/
+ext {
+    compileSdkVersion   = 26
+    targetSdkVersion    = 26
+    buildToolsVersion   = "26.0.2"
+    supportLibVersion   = "26.1.0"
+    googlePlayServicesVersion = "11.8.0"
+    firebaseVersion = "11.8.0"  // <-- if you're using react-native-firebase
+    androidMapsUtilsVersion = "0.5+"  // <-- for react-native-maps
+}

android/app/build.gradle

android {
+    compileSdkVersion rootProject.compileSdkVersion 
+    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig {
+        targetSdkVersion rootProject.targetSdkVersion
    }
}
dependencies {
     compile fileTree(dir: "libs", include: ["*.jar"])
+    compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion"
     compile "com.facebook.react:react-native:+"  // From node_modules
}

Cela fournit un bien meilleur mécanisme pour aligner la version play-services que toutes les vilaines affaires de exclude group :

groovy ... dependencies { ... compile(project(':react-native-maps')){ exclude group: 'com.google.android.gms', module: 'play-services-base' exclude group: 'com.google.android.gms', module: 'play-services-maps' } compile 'com.google.android.gms:play-services-base:10.0.1' compile 'com.google.android.gms:play-services-maps:10.0.1' }

Merci, @christocracy et @isnifer .

@christocracy corrigez-moi si je comprends mal. Votre solution ne nous aidera que si le module tiers la prend en charge, n'est-ce pas ? Par exemple, si le module tiers utilise simplement une version générique en tant que "+" au lieu de $firebaseVersion , cela ne fonctionnera pas.

@isnifer Correct. Les modules tiers doivent être à l' écoute de ces variables. De plus en plus le font. Espérons que cet événement offre un "coup de pied dans le pantalon" à tous les développeurs de modules :)

Il ne devrait plus y avoir de version:+ .

@christocracy merci, cela signifie que nous devons également l'utiliser dans tipsi-stripe .

Si vous avez déjà changé de version sur /android/build.gradle mais que vous ne travaillez pas encore. Peut-être avez-vous besoin de vérifier un package de bibliothèque sur node_modules. Par exemple, react-native-onesignal compile également certains services de jeu avec la version la plus élevée (ils utilisent +) afin qu'il puisse créer ce problème.
Vous pouvez placer un script dans le répertoire racine et ajouter {"scripts": {"postinstall": "node changeVersionGoogleService.js" }} dans le package .json afin qu'il puisse s'exécuter pour modifier automatiquement votre version lors de l'installation de npm.
Voici le script : https://gist.github.com/duytq94/47ef945131b61de538447d449813b3d4
Mon script change maintenant automatiquement de version 'react-native-onesignal',
'réagir-natif-admob',
'react-native-maps',
'react-native-google-sign-in'

@isnifer Haha. J'ai eu un problème posté sur mon module react-native-background-geolocation impliquant tipsi-stripe . Je voulais y envoyer le même PR que j'ai envoyé à react-native-maps :)

Si quelqu'un utilise un module avec une version codée en dur play-services / firebase (par exemple : :+ ), envoyez-lui un lien vers mon PR à react-native-maps . C'est une chose très simple et non invasive à mettre en œuvre pour un développeur de module.

@isnifer (du

@christocracy haha, nous publierons la v5 aujourd'hui. @ngoryachev travaille sur le changelog maintenant. À bientôt)

En ce moment chez Google, le gars qui a sorti la mise à jour 12.0.0 : "Ça va me coûter"

this is gonna cost me

Ma seule solution, après avoir tout essayé, était d'ajouter ce qui suit au android/build.gradle :

allprojects {
    repositories {
        ...
        configurations.all {
            resolutionStrategy {
              force "com.google.android.gms:play-services-gcm:11.8.0"
              force "com.google.android.gms:play-services-auth:11.8.0"
            }
        }
    }
}

@gesf J'ai dû faire quelque chose de similaire car l'une de mes dépendances ne prend pas en charge la variable googlePlayServicesVersion (encore). Il y a un PR sur ce référentiel pour le mettre à jour, alors gardez peut-être un œil sur les dépendances qui sont brisées pour voir si elles sont mises à jour dans un proche avenir (ou l'ont déjà été). Ensuite, vous devriez pouvoir supprimer la section configurations.all et nous pourrons tous pousser un soupir de soulagement !

C'est ainsi que j'ai corrigé dans mon projet (le bit com.android.support était déjà là, j'ai ajouté com.google.android.gms et com.google.firebase)

configurations.all {
    resolutionStrategy {
        eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '25.3.1'
                }
            }
            if (requested.group == 'com.google.android.gms') {
                details.useVersion '11.8.0'
            }
            if (requested.group == 'com.google.firebase') {
                details.useVersion '11.8.0'
            }
        }
    }
}

@jigaryadav , @AndrejGajdos , @isnifer
J'ai changé à tous les endroits du fichier de propriétés en 11.+, j'ai eu une erreur différente cette fois :thinking: :thinking:

voici mon fichier de propriétés
cible=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
cordova.system.library.1=com.google. gms:google-services :11.+
cordova.system.library.2=com.google.android. gms:play-services-tagmanager :11.+
cordova.system.library.3=com.google. firebase:firebase-core :11.+
cordova.system.library.4=com.google. firebase:firebase-messages :11.+
cordova.system.library.5=com.google. firebase:firebase-crash :11.+
cordova.system.library.6=com.google. firebase:firebase-config :11.+

et l'erreur est :

Qu'est ce qui ne s'est pas bien passé:
Un problème est survenu lors de la configuration du projet racine « android ».
Impossible de résoudre toutes les dépendances pour la configuration ':_debugApkCopy'.

ÉCHEC DE CONSTRUCTION

Temps total : 8,075 secondes
Impossible de trouver une version correspondant à com.google. gms:google-services :11+.
Versions qui ne correspondent pas :
3.2.0
3.1.2
3.1.1
3.1.0
3.0.0

  • 42 de plus
    Requis par:
    projet :

Pour cela, j'ai ajouté le code de version Android et ios-CFBundleVersion à mon config.xml, toujours la même erreur

quelqu'un peut-il m'aider à ce sujet?

@ vsreddy91 Vous recherchez l'assistance de Cordova sur un fil React Native .

C'est comme chercher de l'aide pour votre Honda chez un concessionnaire Tesla.

@poppiestar , merci beaucoup pour votre contribution ! Je pense que tu as raison. Par sécurité, je vais appliquer la technique @joeflateau (merci aussi pour ça), pour l'instant !

J'ai cette erreur :
"Qu'est ce qui ne s'est pas bien passé:
L'exécution a échoué pour la tâche ':RND eviceInfo:processReleaseResources '.
Erreur : plusieurs bibliothèques avec le nom de package 'com.google.android.gms.license'"

Quelqu'un peut-il m'aider? Merci!

@arcbook126 react-native-device-info connaît la propriété de configuration Gradle googlePlayServicesVersion . Configurez-le sur 11.8.0 , comme indiqué dans mon commentaire ci-dessus

cd android && ./gradlew app:dependencies --configuration compile

notez cette commande, elle vous indiquera quelle version de Google Play est utilisée dans toutes les bibliothèques importées.

  1. Projet ouvert en studio et dans toutes les bibliothèques tierces remplacer

  2. compiler 'com.google. firebase:firebase-messaging :+' avec une version spécifique comme celle-ci.
    compiler 'com.google. firebase:firebase-messages :11.8.0'

vous utilisez peut-être d'autres bibliothèques non seulement fcm, vison ou autre, mais en règle générale, il est déclaré d'utiliser une version spécifique de celle-ci, cela vous facilitera la vie.
Merci.

@christocracy nous avons publié

@isnifer Mais vous n'avez pas implémenté les variables googlePlayServicesVersion ou supportLibVersion ?

Voici quelque chose qui pourrait vous aider : si vous dépendez d'un ou plusieurs modules qui n'ont pas encore corrigé leur version de dépendance gradle, vous pouvez utiliser patch-package pour modifier la version dans node_modules et générer un correctif qui persistent même sur les serveurs de build ou CI, sans avoir besoin de créer votre propre copie du référentiel du module.

@christocracy Ils sont passés à 11.8 à la place. @isnifer Êtes-vous en mesure de suivre les changements de rupture de 11,8 à 12 ?

@christocracy oui, nous avons fait un RP hier, mais #PlayServicesGate l'a fait aujourd'hui :) Vous pouvez nous aider)

@coreh ouais, sympa !
@yangtaufoo tu tipsi-stripe ?

@isnifer je ne comprends pas ce que tu veux dire.

Quoi qu'il en soit, j'ai réalisé que exclude group est obsolète (je n'en suis pas sûr), mais jetez un œil à @ https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration .html#exclude_dependencies ou peut-être que les mots-clés de dépendance ont changé (https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations)

Edit 1 - Trouvé une autre source de support (https://stackoverflow.com/questions/48365687/gradle-exclude-group-from-compile). Ainsi, la compilation est toujours utilisable et cette solution pourrait fonctionner. Faut le tester.

De
exclude group: 'com.jakewharton.threetenabp', module: 'threetenabp'

À
variant.getCompileConfiguration().exclude group: 'com.jakewharton.threetenabp', module: 'threetenabp'

+1 a commencé à recevoir cela aujourd'hui aussi

* What went wrong:
Execution failed for task ':app:processReleaseResources'.
> Error: more than one library with package name 'com.google.android.gms.license'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

android/app/build.gradle

buildscript {
  repositories {
    maven { url 'https://maven.fabric.io/public' }
  }
  dependencies {
    classpath 'io.fabric.tools:gradle:1.22.1'
  }
}

apply plugin: "com.android.application"
apply plugin: 'io.fabric'

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js"
]

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false

def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig {
        applicationId "....."
        minSdkVersion 16
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    signingConfigs {
    release {
          if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
              storeFile file(MYAPP_RELEASE_STORE_FILE)
              storePassword MYAPP_RELEASE_STORE_PASSWORD
              keyAlias MYAPP_RELEASE_KEY_ALIAS
              keyPassword MYAPP_RELEASE_KEY_PASSWORD
          }
      }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

repositories {
   flatDir {
       dirs "../../node_modules/react-native-background-geolocation/android/libs"
   }
   maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    compile project(':react-native-maps')
    compile project(':react-native-check-app-install')
    compile project(':react-native-vector-icons')
    compile project(':react-native-splash-screen')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion"
    compile "com.facebook.react:react-native:+"  // From node_modules
    compile(project(':react-native-background-geolocation')) {
      exclude group: 'com.google.android.gms', module: 'play-services-location'
    }
    compile(name: 'tslocationmanager', ext: 'aar')
    compile(project(':react-native-maps')) {
        exclude group: 'com.google.android.gms'
    }
    compile ('com.google.android.gms:play-services-location:+') {
      force = true;
    }
    compile ("com.google.android.gms:play-services-base:+") {
      force = true;
    }
    compile ("com.google.android.gms:play-services-maps:+") {
        force = true;
    }
    compile('com.crashlytics.sdk.android:crashlytics:2.6.7<strong i="10">@aar</strong>') {
      transitive = true
    }
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

@christocracy , j'ai essayé votre méthode mais cela n'a pas fonctionné.

@EsdrasEtrenne Je viens de publier react-native-background-geolocation @ 2.12.0-beta.1 environ 7 minutes. Il est publié maintenant sur npm.

oh génial,

mise à jour, j'ai corrigé mes dépendances pour supprimer l'exclusion, cela fonctionne ...
Je viens de réaliser que vous disiez que si vous avez ces configurations globales, vous pouvez supprimer l'exclusion

dependencies {
    compile project(':react-native-maps')
    compile project(':react-native-check-app-install')
    compile project(':react-native-vector-icons')
    compile project(':react-native-splash-screen')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion"
    compile "com.facebook.react:react-native:+"  // From node_modules
    compile project(':react-native-background-geolocation')
    compile(name: 'tslocationmanager', ext: 'aar')
    compile project(':react-native-maps')
    compile('com.crashlytics.sdk.android:crashlytics:2.6.7<strong i="9">@aar</strong>') {
      transitive = true
    }

@EsdrasEtrenne Vous voudrez porter une attention particulière à la nouvelle documentation de configuration Android. Beaucoup de choses ont changé. Imaginez que vous installez le plugin pour la première fois. Si vous avez d'autres problèmes, publiez un problème sur le dépôt.

Nous l'avons corrigé en forçant tous les com.google.android.gms vers une version spécifique

en /android/app/gradle.properties :

...
googlePlayServicesVersion=11.8.0
...

en /android/app/build.gradle :

...
dependencies {
  ...
  compile ("com.google.android.gms:play-services-auth:$googlePlayServicesVersion") {force = true}
  compile ("com.google.android.gms:play-services-analytics:$googlePlayServicesVersion") {force = true}
  compile ("com.google.android.gms:play-services-location:$googlePlayServicesVersion") {force = true}
  compile ("com.google.android.gms:play-services-gcm:$googlePlayServicesVersion") {force = true}
  ...
}
...

en /android/build.gradle :

def googlePlayServicesVersion = googlePlayServicesVersion
...
allprojects {
    repositories {
        ...
        configurations.all {
            resolutionStrategy {
                force "com.google.android.gms:play-services-gcm:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-analytics:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
                force "com.google.android.gms:play-services-auth:$googlePlayServicesVersion"
            }
        }
    }
}

Maintenant, cela fonctionne parfaitement 🎉 🎉 🎉

marque

@dwicao, vous pouvez déplacer la gradle.properties vers android/build.gradle et la mettre comme ceci...

buildscript {...}
allprojects {...}
ext {
    googlePlayServicesVersion=11.8.0
}

googlePlayServicesVersion seront alors disponibles tout au long de vos études.

Cela a fonctionné hier, puis s'arrête soudainement de fonctionner aujourd'hui. Je ne sais pas vraiment qui blâmer et c'est vraiment ennuyeux. Je fais déjà de la même manière que ce qui a été suggéré (en utilisant ext pour définir la variable globale et exclure + forcer la combinaison dans la compilation) mais j'obtiens toujours une erreur, je suis à court d'idées. Forçant actuellement tous les services de jeu de Google à 11.6.2 (voir ci-dessous). Aussi je suis sur un projet d'expo détaché.

  ....
  compile(...) {
     exclude group: 'com.google.android.gms'
  }
  compile ("com.google.android.gms:play-services:11.6.2") {
    force = true;
  }

Capturez la sortie de :

$ cd android 
$ ./gradlew app:dependencies

Enregistrer dans un fichier et joindre. Ne collez

@christocracy https://gist.github.com/pencilcheck/ed4a4a3ab5f9e2228c5772df1c8a901a voici la sortie.

Ce qui est étrange, c'est que je ne trouve aucune bibliothèque nommée "...android.gms.license"

Quel gâchis est Expo. Modifiez votre commentaire précédent et publiez votre app/build.gradle dans un autre message.

Merci de prendre le temps. Voici l'essentiel de app/build.gradle : https://gist.github.com/pencilcheck/d4cf17590430ec639db596e41c36d831

La version de la bibliothèque de support doit correspondre à compileSdkVersion. Lorsque compileSdkVersion 26 , vous devez utiliser la version 26 correspondante de la bibliothèque de support, par exemple 26.1.0 .

Vous spécifiez une version de la bibliothèque de support de 23

Après être passé à 26.1.0 pour la version support lib à l'aide de la variable définie ci-dessus, le problème persiste, j'obtiens toujours la même erreur.

C'est bizarre, je pensais que la solution de ce fil devrait s'appliquer à toutes les dépendances dans tous les sous-projets, n'est-ce pas ?

Étant donné que cette erreur provient de react-native-device-info, la modification du problème de version de la bibliothèque de support n'affecte pas vraiment cela.

Error:Execution failed for task ':react-native-device-info:processDebugResources'.
> Error: more than one library with package name 'com.google.android.gms.license'

react-Native-device-info comprend la variable spécifiquement nommée supportLibVersion

et utilisez-vous la dernière version de react-native-device-info ?

Voir le Wiki de mon react-native-background-geolocation

Vous voudrez définir ext.googlePlayServicesVersion . react-native-device-info est également conscient de cette variable.

@pencilcheck Faites ceci dans votre android/build.gradle

buildscript {...}
allprojects {...}
ext {
    googlePlayServicesVersion=11.8.0
}

@christocratie
En fait, non, je ne le suis pas. C'était 0.11.0, maintenant mis à niveau vers 0.21.2 et réessayé et cela semble fonctionner maintenant avec votre solution de contournement.

Merci!

@yangtaufoo oui, j'utilisais en fait une ancienne version de la bibliothèque, c'est pourquoi elle n'était pas au courant des changements. Mais apprécie toujours l'aide et les commentaires. Merci!

Haha, maintenant l'erreur a disparu mais réapparaît dans "react-native-onesignal", bordel !

@pencilcheck c'est sur toutes les bibliothèques qui utilisent GMS, je pense que vous devez bifurquer et appliquer les changements de gradle s'ils ne le prennent pas encore en charge. Ma première hypothèse est que nous (tous les packages utilisant GMS) devrons peut-être déplacer com.android.tools.build:gradle , buildToolsVersion , com.android.support:appcompat-v7 , com.google.gms:google-services vers la dernière version prenant en charge la version 3.0 brancher.

Vous êtes foutu avec un seul signal . Comme vous pouvez le voir, leurs versions sont toutes codées en dur. Ce module n'est pas au courant des propriétés de votre configuration gradle. Ils ont besoin de mon RP que j'ai envoyé à 'react-native-maps', posté ci-dessus dans ce fil.

Les derniers packages de services Google Play ont causé le problème. Dans mon application, j'ai utilisé les packages suivants - react-native-google-signin , react-native-google-analytics-bridge , react-native-device-info . Chacun d'eux a la dépendance avec com.google.android.gms . Dans le fichier gradle de construction de chaque package, vous trouverez quelque chose de similaire à celui-ci : com.google.android. + tirera le dernier paquet et cela a causé le problème. Voici le correctif temporaire si vous ne souhaitez pas mettre à niveau les packages et définir la variable env pour la version -

dans votre fichier gradle de construction de niveau supérieur, ajoutez le code suivant -

allprojects {
    repositories {
        configurations.all {
            resolutionStrategy {
                force "com.google.android.gms:play-services-analytics:11.8.0"
                force "com.google.android.gms:play-services-auth:11.8.0"
                force "com.google.android.gms:play-services-gcm:11.8.0"
            }
        }
...

Modification du fichier build.gradle dans cordova-plugin-firebase

compiler 'com.google. firebase:firebase-crash :11.+'
compiler 'com.google. firebase:firebase-auth :11.+'

Et le fichier project.properties

cible=android-25

android.library.reference.1=CordovaLib
cordova.gradle.include.3=cordova-plugin-firebase/project-build.gradle
cordova.system.library.3=com.google. gms:google-services :+
cordova.system.library.4=com.google.android. gms:play-services-tagmanager :11.+
cordova.system.library.5=com.google. firebase:firebase-core :11.+
cordova.system.library.6=com.google. firebase:firebase-messages :11.+
cordova.system.library.7=com.google. firebase:firebase-crash :11.+
cordova.system.library.8=com.google. firebase:firebase-config :11.+

Et enfin, mon problème a été résolu, j'ai pu construire le projet correctement

@Karthikeyan-Pandian vos modifications ont été effectuées correctement mais ne fonctionnent toujours pas.

Modifie le fichier build.gradle dans cordova-plugin-firebase (plugins\cordova-plugin-firebase\src\android)
dépendances {
compilez-moi. leolin:RaccourciBadger :1.1. 4@aar '
compiler 'com.google. firebase:firebase-crash :11.+'
compiler 'com.google. firebase:firebase-auth :11.+'
}
Et le fichier project.properties

cordova.gradle.include.1=cordova-plugin-firebase/android-build.gradle
cordova.system.library.2=com.google. gms:google-services :+
cordova.system.library.3=com.google. firebase:firebase-core :11.+
cordova.system.library.4=com.google. firebase:firebase-messages :11.+
cordova.system.library.5=com.google. firebase:firebase-crash :11.+
cordova.system.library.6=com.google. firebase:firebase-config :11.+

@Lifesoftware
As-tu supprimé la plateforme Android ?

Sinon, supprimez et ajoutez la plate-forme après avoir mis à jour le fichier build.gradle dans le dossier cordova-plugin-firebase et après l'ajout de la plate-forme, mettez à jour le fichier project.properties, puis créez et vérifiez une fois

Si cela ne fonctionne pas, faites-moi savoir que j'ai une autre solution que nous pouvons essayer avec cela.

@Karthikeyan-Pandian ça marche pour moi. Merci d'avoir donné la solution 🎉 🎉 🎉

Je peux le faire compiler avec 12.0.0 . Cependant, certaines bibliothèques peuvent se briser. Toujours à déterminer l'étendue des dégâts. (Modifier : Utilisez la version 11.8.0 ci-dessous, car de nombreuses bibliothèques tierces n'ont pas l'implémentation Android pour 12.0.0, mais cette implémentation facilitera la mise à niveau dans un proche avenir)

Mais c'est ce que j'ai fait,

  1. Dans gradle-wrapper.properties , remplacez distributionUrl par https\://services.gradle.org/distributions/gradle-4.1-all.zip
  2. Objet ext défini dans android/build.gradle
ext {
    googlePlayServicesVersion = '11.8.0'
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'
    supportLibrariesVersion = '27.1.0'
}
// Force sub libs to use the compile sdk & build tools version
subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}
  1. Dans app/build.gradle , changé tous les compile en implementation , utilisé les variables d'objet ext définies par le projet dans android/build.gradle (c'est- implementation "com.google.android.gms:play-services-gcm:$project.googlePlayServicesVersion" dire
  2. Dans android/build.gradle , assurez-vous que vos dépendances sont les suivantes
buildscript {
    repositories { ... }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.google.gms:google-services:3.2.0'
    }
}
  1. Exécutez ./gradlew clean && ./gradlew assembleDebug
  2. Dans gradle.properties, ajoutez la ligne 'android.enableAapt2=false' pour que les versions de version soient regroupées en raison d'un changement radical dans Build Tools v3.

Edit : le correctif fonctionne pour 12.0.0 (compile et exécute le projet avec succès). Cependant, notez ce qui précède concernant l'utilisation de 11.8 à la place.

Une solution simple consiste à trouver com.google.firebase dans tous les dossiers et à modifier

Après
compiler "com.google. firebase:firebase-core :+"
compiler "com.google. firebase:firebase-messaging :+"
compiler "com.google. firebase:firebase-crash :+"
compiler "com.google. firebase:firebase-config :+"

Avant
compiler "com.google. firebase:firebase-core :11.+"
compiler "com.google. firebase:firebase-messaging :11.+"
compiler "com.google. firebase:firebase-crash :11.+"
compiler "com.google. firebase:firebase-config :11.+"

Ce lien résout le même problème et je l'ai essayé, et cela fonctionne pour moi, vous pouvez le vérifier ici

À ce sujet : https://github.com/facebook/react-native/issues/18479#issuecomment -375170840

@pencilcheck Je suis presque sûr que vous avez une faute de frappe
Remplacer
if (details.requested.group == 'com.android.gms' ) {
avec
if (details.requested.group == 'com.google.android.gms' ) {

Mon approche consiste à analyser tous les projets Android et à mettre à jour la version des services Google Play directement sur chaque module build.gradle
Détail ici : https://medium.com/p/2fd245027832
Espérons que cela peut vous aider.

@nhancv Cela ne constitue pas un correctif. Un correctif est lorsque vous êtes en mesure d'utiliser 12.0.0 comme prévu.

Ce problème ne concerne pas le projet React Native. Ce projet n'inclut aucune dépendance gms/firebase, il peut donc être fermé.

Soulever un problème avec les bibliothèques qui utilisent des dépendances gms avec un + . C'est généralement une mauvaise pratique d'utiliser des caractères génériques si vous voulez des builds reproductibles.

Comme solution de contournement pratique, ajoutez ceci à votre android/build.gradle (similaire à la solution de @weihuali0509 mais plus complète)

subprojects {
    ext {
        playServicesVersion = '11.8.0'
    }

    project.configurations.all {
        resolutionStrategy {
            eachDependency { details ->
                // Force dependencies to use the same version.
                def versionSelector = details.requested
                if (versionSelector.group == 'com.google.firebase'
                        || versionSelector.group == 'com.google.android.gms') {
                    details.useVersion playServicesVersion
                }
            }
        }
    }
}

J'ai trouvé une solution temporaire.
Essayez de trouver tous vos packages avec gms inclus dans vos modules de nœud.
Faites ceci à votre android/build.gradle

allprojects {
    repositories {

        // Temp fix for com.google.android.gms.license
        configurations.all {
            resolutionStrategy {

                // Put your gms packages here with 11.8.0 attached
                force "com.google.android.gms:play-services-analytics:11.8.0"
                force "com.google.android.gms:play-services-auth:11.8.0"
                force "com.google.android.gms:play-services-gcm:11.8.0"
                force "com.google.android.gms:play-services-location:11.8.0"
            }
        }

        mavenLocal()
        jcenter()

        maven { url "https://maven.google.com" }
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

J'ai résolu le problème avec pour modifier cela à partir de "android/app/build.gradle" et j'ai également changé cela à partir duquel la bibliothèque créait des problèmes "node_modules\react-native-camera\androidbuild.gradle"

===>>> "com.google.android. gms:play-services-vision :11.+"

J'ai tout essayé depuis hier, de gradle aux scripts de nœud de post-installation, avec toutes les versions : que ce soit 11.6.0 11.8.0 12.0.0 et les versions des outils de construction Android 26 et 27 , absolument rien n'a fonctionné, il donne toujours le même message d'erreur Error: more than one library with package name 'com.google.android.gms.license'

La seule chose qui varie est le module à partir duquel cette erreur est crachée...

vous voudrez peut-être essayer ma solution (https://github.com/facebook/react-native/issues/18479#comment-375200874) je l'ai opérationnel. Besoin de quelques ajouts pour la commande assembleRelease, à part cela, cela fonctionne bien

J'ai essayé tout ce que vous avez suggéré depuis 2 heures @yangguang2009 mes fichiers gradle sont maintenant beaucoup plus propres maintenant ;) mais cela n'affectera pas du tout le résultat final

La seule chose qui n'a pas fonctionné pour moi est la suivante:

Dans gradle-wrapper.properties, remplacez distributionUrl par https\://services.gradle.org/distributions/gradle-4.1-all.zip

@btoueg Pouvez-vous publier des extraits de vos fichiers gradle ?

Je construis ReactNative à partir des sources, c'est pourquoi je ne peux pas facilement passer à la version 4.1

@yangtaufoo Voici ma racine build.gradle :

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'de.undercouch:gradle-download-task:3.1.2'
        classpath 'com.google.gms:google-services:3.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

ext {
    googlePlayServicesVersion = '12.0.0'
    compileSdkVersion = 27
    buildToolsVersion = '27.0.3'
    supportLibrariesVersion = '27.1.0'
}

// Force sub libs to use the compile sdk & build tools version
subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            url "https://maven.google.com"
        }
        maven {
            url 'https://jitpack.io'
        }
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

J'ai joué avec toutes sortes de googlePlayServicesVersion , compileSdkVersion , buildToolsVersion , supportLibrariesVersion

Et mon application build.gradle :

apply plugin: "com.android.application"
apply from: "../../node_modules/react-native/react.gradle"
apply from: "../../node_modules/react-native-sentry/sentry.gradle"

def enableProguardInReleaseBuilds = true

android {
    compileSdkVersion "$project.compileSdkVersion"
    buildToolsVersion "$project.buildToolsVersion"
}

configurations.all {
    exclude group: 'com.facebook.react', module: 'react-native'
    resolutionStrategy {
        eachDependency { details ->
            // Force dependencies to use the same version.
            def requested = details.requested
            if (requested.group.startsWith('com.google.android.gms')) {
                details.useVersion "$project.googlePlayServicesVersion"
            }
            if (requested.group == 'com.google.firebase') {
                details.useVersion "$project.googlePlayServicesVersion"
            }
            if (requested.group == 'com.android.support' && !requested.name.startsWith('multidex')) {
                details.useVersion "$project.supportLibrariesVersion"
            }
        }
        // fail eagerly on version conflict (includes transitive dependencies)
        // e.g. multiple different versions of the same dependency (group and name are equal)
        failOnVersionConflict()

        // force certain versions of dependencies (including transitive)
        //  *append new forced modules:
        force 'me.leolin:ShortcutBadger:1.1.10'
        force 'com.android.support:multidex:1.0.3'
        force 'com.facebook.fresco:fbcore:0.13.0'
        force 'com.facebook.fresco:imagepipeline:0.13.0'
        force 'com.squareup.okhttp3:okhttp:3.5.0'
        force 'com.yqritc:android-scalablevideoview:1.0.3'
        force 'com.google.code.gson:gson:2.3.1'
        force 'com.google.zxing:core:3.2.1'
        force 'com.squareup.okio:okio:1.13.0'
    }
}

dependencies {
    configurations.all {
        exclude group: 'com.facebook.react', module: 'react-native'
    }
    compile fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:$project.supportLibrariesVersion"
    implementation 'com.yqritc:android-scalablevideoview:1.0.4'
    implementation 'com.amazonaws:aws-android-sdk-core:2.3.0'
    implementation 'com.amazonaws:aws-android-sdk-cognito:2.3.0'
    implementation 'com.amazonaws:aws-android-sdk-s3:2.3.0'
    implementation 'com.google.zxing:core:3.3.0'
    implementation 'com.facebook.fresco:animated-gif:0.13.0'
    compile project(':react-native-video')
    compile project(':react-native-fs')
    compile project(':react-native-orientation')
    compile project(':react-native-image-picker')
    compile project(':reactdate')
    compile project(':react-native-maps')  // make use of $project.googlePlayServicesVersion
    compile project(':react-native-push-notification')
    compile project(':react-native-vector-icons')
    compile project(':react-native-fbsdk')
    compile project(':react-native-camera')
    compile project(':react-native-blur')
    compile project(':react-native-linear-gradient')
    compile project(':react-native-fcm')
    compile project(':react-native-sentry')
    implementation "com.google.android.gms:play-services-gcm:$project.googlePlayServicesVersion"
    implementation "com.google.android.gms:play-services-location:$project.googlePlayServicesVersion"
    implementation "com.google.android.gms:play-services-vision:$project.googlePlayServicesVersion"
    implementation 'com.android.support:multidex:1.0.3'
    implementation "com.google.firebase:firebase-core:$project.googlePlayServicesVersion"
    implementation "com.google.firebase:firebase-messaging:$project.googlePlayServicesVersion"
    compile project(':ReactAndroid')  // make sure to keep this dependency last in the list
}

apply plugin: 'com.google.gms.google-services'

Pour ceux qui sont toujours confrontés au problème, je vais essayer d'expliquer clairement comment le résoudre et ce qui se passe. Tout d'abord, si vous obtenez cette erreur, il y a de fortes chances que votre code ou un package npm inclus contienne les lignes
compile 'com.google.android.gms:play-services-XXXXXXX:+' quelque part dans un fichier build.gradle , où XXXXX est l'un des services Google Play comme auth ou location . un bon exemple est react-native-fused-location .

Maintenant, pour forcer une version pour toutes les bibliothèques qui compilent vers la version + vous avez besoin pour appliquer une version, vous le faites dans votre fichier racine android/build.gradle en ajoutant la section configuration.all dans l'exemple ci-dessous :

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
       ...
       ...
        configurations.all {
            resolutionStrategy {
                force "com.google.android.gms:play-services-location:11.8.0"
            }
        }
    }
}

Je suivrais également utiliseraient dans ce fichier, par exemple :

ext {
    compileSdkVersion   = 26
    targetSdkVersion    = 26
    buildToolsVersion   = "26.0.2"
    supportLibVersion   = "26.1.0"
    googlePlayServicesVersion = "11.8.0" 
    androidMapsUtilsVersion = "0.5+"  // <-- for react-native-map
}

VEUILLEZ NOTER - il existe divers services de jeu pour lesquels vous pouvez configurer une stratégie de résolution en fonction de la bibliothèque qui pose le problème, c'est- play-services-auth dire

puis dans votre fichier android/app/build.gradle , utilisez les variables rootProject, c'est-à-dire

android {
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion rootProject.buildToolsVersion

    defaultConfig {
        applicationId "com.driver"
        minSdkVersion 16
        targetSdkVersion rootProject.targetSdkVersion
        googlePlayServicesVersion = rootProject.googlePlayServicesVersion
    ...

et assurez-vous que vos dépendances ne forcent pas la compilation de versions spécifiques des services google-play, et compilez la version appcompat à partir de votre rootProject. un exemple de ma config

dependencies {
    compile project(':react-native-background-geolocation')
    compile project(':react-native-background-fetch')
    compile project(':react-native-maps')
    compile project(':react-native-fused-location')
    compile project(':react-native-image-picker')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.facebook.react:react-native:+"  // From node_modules
    compile "com.android.support:appcompat-v7:$rootProject.supportLibVersion"
}

@btoueg, vous voudrez peut-être les changer dans votre build.gradle

classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.2.0'

Je poste mon message moyen sur ce problème. Vérifiez-le et faites-moi savoir s'il y a des problèmes!

https://medium.com/@chuckyong_3313/react -native-android-build-compilation-issue-with-google-play-api-for-android-v12-0-0-ccb2f1a0fb9c

Pour moi, onesignal est le seul module de nœud qui utilise les services Google Play dans mon projet, j'ai donc simplement modifié ce qui suit dans /node_modules/react-native-onesignal/android/build.gradle :

compile 'com.google.android.gms:play-services-gcm:+'
compile 'com.google.android.gms:play-services-analytics:+'
compile 'com.google.android.gms:play-services-location:+'

à

compile 'com.google.android.gms:play-services-gcm:11.8.0'
compile 'com.google.android.gms:play-services-analytics:11.8.0'
compile 'com.google.android.gms:play-services-location:11.8.0'

vient de changer le + en 11.8.0
et a exécuté le projet et cela a bien fonctionné. Je ne sais pas si c'est une bonne solution, mais c'est à coup sûr très court et simple. Vous devrez le faire pour tous vos modules utilisant les services Google Play. Ce n'est peut-être pas la meilleure solution si vous en avez beaucoup.

tellement de problèmes avec React-Native.
Je voulais juste utiliser l'appareil photo dans React-native, je n'ai pas pu le faire au cours des 2 derniers jours.
obtenir une erreur différente à chaque fois, maintenant une erreur "plus d'une lib".
Si quelqu'un a une solution de travail de reflex-native-camera, merci de la partager.

@mk48 Cette erreur vient de google, google a lancé 12.0.0 avec des erreurs. C'est tout le problème en ce moment

Merci @KoenvGinkel , j'arrêterai mon projet natif actuel pour les 2 prochains jours, je reprendrai après cela.
j'espère que cela sera résolu cette fois.

@mk48 suivez ceci, cela peut vous aider,
Modifiez-le à partir de "android/app/build.gradle" et modifiez également cela à partir duquel la bibliothèque créait des problèmes "node_modules\react-native-camera\androidbuild.gradle"

===>>> "com.google.android. gms:play-services-vision :11.+"

@yangguang2009 merci, toutes les informations m'ont été très précieuses

Je n'ai pas compris que je devais changer le chemin de classe jusqu'à https://github.com/facebook/react-native/issues/18479#issuecomment -375523567 et je ne savais même pas que vous pouviez désynchroniser la version du gradle- wrapper avec la version du classpath (ce qui rendait les choses assez floues)

Je trouve votre article de blog Medium complet et je vous en suis très reconnaissant.

Maintenant que je me suis débarrassé du problème gms.license , il me reste cette erreur qui se produit après la compilation :

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processProReleaseResources'.
> Failed to execute aapt

J'espère que ce sera plus simple à résoudre ;)

@btoueg Il existe un problème connu avec Build Tools 3 (https://github.com/facebook/react-native/issues/16906) provoquant l'échec d'une build pour la publication. Le correctif consiste à ajouter android.enableAapt2=false à android/gradle.properties comme solution de contournement temporaire.

@Karthikeyan-Pandian @Lifesoftware

cordova.system.library.2=com.google. gms:google-services :11+
cordova.system.library.3=com.google.android. gms:play-services-tagmanager :11+
cordova.system.library.4=com.google. firebase:firebase-core :11+
cordova.system.library.5=com.google. firebase:firebase-messagerie :11+
cordova.system.library.6=com.google. firebase:firebase-crash :11+
cordova.system.library.7=com.google. firebase:firebase-config :11+
cordova.system.library.8=com.google.android. gms:play-services-analytics :11+
cordova.system.library.9=com.google.android. gms:play-services-auth :11+
cordova.system.library.10=com.google.android. gms:play-services-identity :11+

Après avoir modifié les propriétés du projet
j'ai ajouté la plate-forme
puis changer de build
dépendances {
compilez-moi. leolin:RaccourciBadger :1.1. 4@aar '
compiler 'com.google. firebase:firebase-crash :11.+'
compiler 'com.google. firebase:firebase-auth :11.+'
}

mais affiche toujours une erreur

Impossible de trouver une version correspondant à com.google. gms:google-services :11+.
Versions qui ne correspondent pas :
3.1.1
3.1.0
3.0.0
2.1.2
2.1.0
+ 42 de plus
Requis par:
projet :

Merci @muhammadmisbah , cela a résolu le problème de la caméra. Merci :)

Après avoir mis à jour mon gradle, tout semblait bien fonctionner.
peut-être que vous utilisez d'anciennes versions de gradle ?
Ma version actuelle est maintenant 4.6
https://gradle.org/install/

Après avoir mis à jour mon gradle, j'ai supprimé le dossier gradle dans mon dossier Android.
Je l'ai couru avec androidstudio, ça l'a corrigé.

@yangtaufoo Après avoir résolu l'erreur en suivant votre didacticiel moyen et mon succès de construction, mais après cela, mon application se ferme dès son ouverture... Existe-t-il une solution pour cela ??

@KoenvGinkel Cela ne m'a pas aidé :/

@yangtaufoo @Vijay-clustrex le même problème m'arrive. Une fois l'erreur résolue et la construction réussie, l'application se bloque instantanément à l'ouverture. Toute aide est très appréciée.

Pour ceux dont l'application plante, faites un "adb logcat" dans la console et démarrez l'application et recherchez les plantages fatals, les traces de pile, etc. Cela devrait vous donner un indice.

J'ai eu le même problème avec la venue en raison de react-native-push-notification et firebase utilisés ensemble. Voici ce que j'ai fait après de nombreuses heures à comprendre:

1) android/app/build.gradle
fixez-le à une version spécifique insetad de +
compile 'com.google.firebase:firebase-core:12.0.1'

2) android/build.gradle
ajoutez ce qui suit à allprojects

configurations.all {
            resolutionStrategy { 
                force 'com.google.android.gms:play-services-gcm:12.0.1'
            }
        }

3) CD dans le dossier Android à partir du shell et exécutez le nettoyage
$> gradlew clean

react-native-push-notification ont fusionné leurs propriétés gradle aujourd'hui .

Firebase les prend déjà en charge.

@Vijay-clustrex @emilklindt Aura besoin de plus d'informations pour pouvoir aider. tous les journaux sont appréciés

L'utilisation de la dernière version "compile 'com.google. firebase:firebase-core :12.0.1'" a résolu le problème pour moi.

Comme suggéré par @nopedev , la solution pour moi était de forcer la résolution des dépendances spécifique à la version. Je rencontrais des problèmes avec react-native-device-info et react-native-background-geolocation (voir https://github.com/transistorsoft/react-native-background-geolocation/issues/375).

Vous trouverez ci-dessous la configuration qui a fini par le résoudre pour moi, qui n'est qu'une légère modification de ce que @nopedev a initialement commenté, en ajoutant quelques bibliothèques supplémentaires :

def googlePlayServicesVersion = '11.8.0'

configurations.all {
  resolutionStrategy {
    // react-native-admob
    force "com.google.android.gms:play-services-ads:$googlePlayServicesVersion"
    // react-native-maps
    force "com.google.android.gms:play-services-base:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-maps:$googlePlayServicesVersion"
    // react-native-onesignal
    force "com.google.android.gms:play-services-gcm:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-analytics:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
    // react-native-google-sign-in
    force "com.google.android.gms:play-services-auth:$googlePlayServicesVersion"
    // react-native-device-info
    force "com.google.android.gms:play-services-basement:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-iid:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-iid-license:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-gcm-license:$googlePlayServicesVersion"
    // react-native-background-geolocation
    force "com.google.android.gms:play-services-basement-license:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-tasks:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-tasks-license:$googlePlayServicesVersion"
    force "com.google.android.gms:play-services-base-license:$googlePlayServicesVersion"
  }

  ...
}

Cela semble être corrigé après que Google a déployé le correctif ( 12.0.1 ) sur Play Services et Firebase.

Tous,

Bien que forcer les versions GPS/GMS à être inférieures à la v12 fonctionne (comme suggéré ci-dessus), je ne pense pas que ce soit une solution à long terme et vous ne pourrez éventuellement pas utiliser certaines bibliothèques qui restent à jour avec les versions GMS telles que comme nous-mêmes ( react-native-firebase ).

L'approche que je recommanderais serait de mettre à jour votre projet Android pour utiliser les derniers outils de compilation gradle et Android - la plupart des projets sont loin derrière la version à ce sujet.

Voici quelques instructions tirées de notre journal des modifications React Native Firebase v4 qui devraient vous aider à le faire :

## Mise à niveau des outils de construction gradle et Android

En raison de certains changements importants dans la v12 des bibliothèques Android, vous devrez mettre à niveau votre version de Gradle au moins vers la v4.4 et apporter quelques autres modifications comme suit :

1) Dans android/gradle/wrapper/gradle-wrapper.properties , mettez à jour l'URL gradle en gradle-4.4-all.zip
2) Dans android/build.gradle vérifiez que vous avez spécifié google() dans la section des référentiels buildScript :

buildscript {
    repositories {
        jcenter()
        google()  // <-- Check this line exists
        ...
    }

3) Dans android/build.gradle mettez 3.1.0 :

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

4) Dans android/app/build.gradle mettez compile en implementation , par exemple

implementation(project(':react-native-firebase')) {
    transitive = false
}

5) Dans android/app/build.gradle , mettez à jour toutes les dépendances firebase et gms vers 12.0.1


Patcher les modules RN obsolètes

Dans un monde idéal, les modules RN sont tous tenus à jour sur les dépendances graduelles et autres ; mais dans le monde réel, la plupart pourraient ne jamais mettre à niveau leurs versions GMS/fichiers de construction gradle, ce n'est cependant pas la fin de la ligne. Vous pouvez corriger avec succès l'un des modules dont vous souhaitez modifier les versions / définitions de dépendances (par exemple, pour utiliser la nouvelle syntaxe gradle api/implementation/compileOnly) en utilisant le module patch-package npm.

C'est assez simple :

  1. Modifiez/corrigez les modules avec lesquels vous rencontrez des problèmes dans votre répertoire node_modules et faites-les tous construire ensemble avec succès
  2. Une fois que votre projet Android est construit et fonctionne correctement, exécutez patch-package modulename-1 modulename-2 etc à la racine de votre projet et il créera un répertoire de correctifs dans votre projet (contient toutes les modifications que vous avez apportées dans node_modules pour chacun des packages que vous avez spécifiés dans le commander)
  3. Validez ce nouveau répertoire dans le cadre de votre dépôt git
  4. Ajoutez le package de correctifs en tant que script post-install sur votre package.json et il appliquera automatiquement le correctif après chaque installation de npm/yarn
  5. Profiter 🎉

Liens pour référence :
https://github.com/invertase/react-native-firebase/blob/master/android/build.gradle#L83
https://github.com/invertase/react-native-firebase/blob/master/tests/android/app/build.gradle#L75

Attendez, RN prend-il en charge le dernier gradle maintenant ? Je n'ai eu que des problèmes avec la v3.

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté ? Ce problème peut être fermé si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme « Pour discussion » ou « Bon premier numéro » et je le laisserai ouvert. Merci pour vos contributions.

Fermeture de ce problème après une période d'inactivité prolongée. Si ce problème est toujours présent dans la dernière version, n'hésitez pas à créer un nouveau problème avec des informations à jour.

Cette page vous a été utile?
0 / 5 - 0 notes