1
votes

react-native-map plantant l'application

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:+'


3 commentaires

implémentation remplace compile . Vous pouvez donc simplement le changer. Donc, là où vous voyez compiler , utilisez plutôt implementation .


Je n'ai pas compris


Ok Ok, je dois me laisser vérifier


5 Réponses :


0
votes

vous avez ouvert un mauvais fichier. allez dans le projet / android / app / build.gradle ouvrez le fichier de construction et collez les dépendances


2 commentaires

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



1
votes

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
}


2 commentaires

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



3
votes

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
    }
}

https://developers.google.com/maps/documentation/android-sdk/config#specify_the_google_play_services_version_number

J'espère vraiment que cette bibliothèque sera bientôt mise à jour. J'espère que cela aide quelqu'un.


0 commentaires

1
votes

+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" 
    />


1 commentaires

Dans mon cas, j'ai résolu le problème uniquement avec ce code.



0
votes

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"/>`


0 commentaires