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émentationremplacecompile. 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