J'ai essayé d'utiliser l'application native react et d'avoir l'extrait suivant dans le fichier gradle
"react": "16.6.3", "react-native": "0.58.6", "react-native-geolocation-service": "^2.0.0", "react-native-gesture-handler": "^1.1.0", "react-native-maps": "^0.23.0",
J'ai cherché sur Google et trouvé ci-dessous les lignes résolvant les problèmes
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:11.+' compile 'com.google.android.gms:play-services-maps:11.+' compile 'com.google.android.gms:play-services-location:+'
5 Réponses :
vous avez ouvert un mauvais fichier. allez dans le projet / android / app / build.gradle ouvrez le fichier de construction et collez les dépendances
Non, je suis dans le fichier actuel J'ai toutes mes dépendances dans ce fichier et android / build.gradle dit "dependencies {classpath 'com.android.tools.build:gradle:3.2.1' // REMARQUE: ne placez pas votre application dépendances ici; elles appartiennent // aux fichiers individuels build.gradle du module} "
ouvrez ce projet / android / app / build.gradle. vous avez ouvert Project / android / build.gradle
compile
était obsolète au profit de la implémentation
. Vous pouvez facilement remplacer toutes les instances du mot compile
par le mot implemenation
. Ainsi, vos dépendances deviendraient quelque chose comme ceci:
dependencies { implementation(project(':react-native-maps')) { exclude group: 'com.google.android.gms', module: 'play-services-base' exclude group: 'com.google.android.gms', module: 'play-services-maps' } implementation 'com.google.android.gms:play-services-base:11.+' implementation 'com.google.android.gms:play-services-maps:11.+' implementation 'com.google.android.gms:play-services-location:+' // implementation project(':react-native-maps') // <- you can remove this as you are using it above implementation project(':react-native-geolocation-service') implementation project(':react-native-background-timer') implementation project(':react-native-mauron85-background-geolocation') implementation project(':react-native-contacts') implementation project(':react-native-gesture-handler') implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" implementation "com.facebook.react:react-native:+" // From node_modules }
Oui, je l'ai mais maintenant j'obtiens une erreur de dépendance Android 'com.google.android.gms: play-services-location' a une version différente pour le chemin de classe de compilation (11.8.0) et d'exécution (11.4.2). Vous devez définir manuellement la même version via DependencyResolution
C'est probablement parce que vous utilisez +
devez utiliser une version spécifique pour play-services-location. Utiliser +
n'est jamais une bonne idée car il installe simplement la dernière version et peut causer des problèmes de compilation
J'ai passé une éternité là-dessus, je suis finalement tombé sur deux choses. Cela va dans votre build.gradle
pour votre projet (pas celui app / build.gradle
):
If you are using com.google.android.gms:play-services-maps:16.0.0 or below and your app is targeting API level 28 (Android 9.0) or above, you must include the following declaration within the <application> element of AndroidManifest.xml. <uses-library android:name="org.apache.http.legacy" android:required="false" />
Allez simplement avec votre paramètres natifs de réaction standard dans votre app / build.gradle
, n'essayez pas d'exclure des groupes ici - cela n'a pas fonctionné pour moi.
Cela a rendu Android
allprojects { repositories { configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> def requested = details.requested if (requested.group == 'com.google.android.gms') { details.useVersion '12.0.1' } if (requested.group == 'com.google.firebase') { details.useVersion '12.0.1' } } } // ... whatever else you have here already } }
J'espère vraiment que cette bibliothèque sera bientôt mise à jour. J'espère que cela aide quelqu'un.
+1 pour la réponse de @hsearle Dans notre cas, nous utilisons des cartes react-native-maps et je suppose qu'elles sont liées d'une manière ou d'une autre (devinez qui n'est pas un véritable expert react-native);)
De toute façon, nous avons mis à jour le SDK 28 et les cartes ont commencé à planter l'application .
Ci-dessous le code dans l'élément d'application d'AndroidManifest.xml pour la victoire !!
<uses-library android:name="org.apache.http.legacy" android:required="false" />
Dans mon cas, j'ai résolu le problème uniquement avec ce code.
Il s'agit d'un problème avec la bibliothèque de cartes sous-jacente. Veuillez également consulter cette documentation de Google: - https://developers.google .com / maps / documentation / android-sdk / config # specify_requirement_for_apache_http_legacy_library
La solution est: - Mettez cette ligne de code dans le fichier Manifest sous la balise
:
`<uses-library android:name="org.apache.http.legacy" android:required="false"/>`
implémentation
remplacecompile
. Vous pouvez donc simplement le changer. Donc, là où vous voyezcompiler
, utilisez plutôtimplementation
.Je n'ai pas compris
Ok Ok, je dois me laisser vérifier