web-dev-qa-db-fra.com

Google Maps V2 ne fonctionne pas en production avec la clé correcte

J'éprouve de grandes difficultés à faire fonctionner Google Maps en production dans une application Android. C'est ce que je suis en train de recevoir (le fond est juste des annonces).

App production screen

Les étapes clés que j'ai suivies:

1) Je me suis assuré d’avoir la bonne clé de production SHA1 et de l’avoir mise en œuvre sur l’API de la console Google ainsi que dans l’application (la clé fournie par Google). J'ai enregistré deux clés - une pour le débogage et une pour la production

2) Internet, l'emplacement, etc. fonctionne

3) L'application fonctionne en mode DEBUG, mais ne fonctionne pas lorsqu'elle est signée et installée sur le périphérique via USB. J'ai vérifié trois fois le SHA 1 signature du signe, etc.

4) MapsFragment provient du modèle disponible dans Android Studio.

En mode production, le log du chat affiche ceci:

01-11 16:04:54.511  19346-19437/com.mike.mapstest E/Google Maps Android API﹕ Authorization failure.  Please see https://developers.google.com/maps/documentation/Android/start for how to correctly set up the map.
01-11 16:04:54.516  19346-19437/com.mike.mapstest E/Google Maps Android API﹕ In the Google Developer Console (https://console.developers.google.com)
    Ensure that the "Google Maps Android API v2" is enabled.
    Ensure that the following Android Key exists:
    API Key: YOUR_KEY_HERE
    Android Application (<cert_fingerprint>;<package_name>): <SHA1 Removed for this> ;com.mike.mapstest

Cette erreur dit évidemment que quelque chose ne va pas avec mon autorisation? Qu'est-ce que je fais mal?

28
ForeverLearning

Basé sur la sortie logcat de votre version de publication débogable:

01-11 16:04:54.511  19346-19437/com.mike.mapstest E/Google Maps Android API﹕ Authorization failure.  Please see https://developers.google.com/maps/documentation/Android/start for how to correctly set up the map.
01-11 16:04:54.516  19346-19437/com.mike.mapstest E/Google Maps Android API﹕ In the Google Developer Console (https://console.developers.google.com)
    Ensure that the "Google Maps Android API v2" is enabled.
    Ensure that the following Android Key exists:
    API Key: YOUR_KEY_HERE
    Android Application (<cert_fingerprint>;<package_name>): <SHA1 Removed for this> ;com.mike.mapstest

il semblerait que vous n’ayez pas remplacé l’espace réservé jkey key YOUR_KEY_HERE dans le manifeste (ni dans un fichier de clés api séparé, selon votre configuration). Remplacez cette chaîne, où qu'elle se trouve, par votre clé actuelle et vous devriez être prêt à partir.

Edit: ce tutoriel , s'il correspond à votre configuration, explique probablement pourquoi vous ne voyez ceci que pour les versions:

Revenez dans Android Studio et collez la clé API dans la section YOUR_KEY_HERE du fichier:

Notez que ces étapes ont activé la prise en charge par Google Maps de la version de débogage du package d'application. La clé API devra également être ajoutée au fichier google_maps_api.xml situé dans MapDemo -> app -> src -> release -> res -> lorsque la version validée de l'application sera prête à être générée.

37
stkent

J'avais ces mêmes problèmes et me frappais la tête contre le mur pendant quelques jours. J'ai lu tous les articles sur la mise en place de la clé correcte. Je n'arrêtais pas de mettre la bonne clé dans mon fichier google_maps_api.xml. StKent mentionné ci-dessus pour vous assurer de remplacer par la chaîne réelle dans AndroidManifest.xml. C'est ce qui l'a corrigé pour moi.

Ce que j'avais quand ça ne fonctionnait pas: Dans AndroidManifest.xml:

<meta-data
            Android:name="com.google.Android.geo.API_KEY"
            Android:value="@string/google_maps_key" />

et dans google_maps_api.xml:

 <string name="google_maps_key"
        templateMergeStrategy="preserve"
        translatable="false">AIza_the actual key</string>

Ce que j'ai changé pour que cela fonctionne J'ai changé mon AndroidManifest.xml pour inclure:

<meta-data
            Android:name="com.google.Android.geo.API_KEY"
            Android:value="AIzsa_the actual key" />
8
Chris Toews

Lorsque vous utilisez Android Studio pour générer l'activité Google Maps, il ignore les configurations de construction de votre gradeau et utilise le debug.keystore par défaut. Le SHA1 dans google_maps_api.xml est basé sur cette valeur par défaut. Lors de la création d'une autorisation dans la console Google API, veillez à utiliser votre production et à déboguer SHA1 si vous utilisez la méthode autre que celle par défaut.

4
Steve Tauber

la clé de débogage et de production sera différente. Si vous utilisez la clé de débogage pour le mode de publication, vous ne pouvez pas afficher la carte Google. Pour le mode de publication, lorsque vous modifiez la clé Google Map, vous devez nettoyer le projet, puis exporter apk.

vous pouvez obtenir plus d'informations https://developers.google.com/maps/documentation/Android/start

obtenir un SHA1 privé à partir du magasin de clés de débogage

keytool -list -v -keystore ~ ​​/ .Android/debug.keystore -alias androiddebugkey -storepass Android -keypass mot_de_passe_app

pour voir plus 

Empreinte SHA-1 du certificat de magasin de clés

ou vous pouvez utiliser l'outil Eclipse pour générer une clé privée SHA1 à l'aide du menu d'exportation

3
Mohammod Hossain

Dans mon cas, l'écran gris était dû à une implémentation personnalisée de HostnameVerifier qui empêchait le chargement des mosaïques. 

J'espère que cela aidera quelqu'un d'autre à l'avenir. 

0
Adrian C.

Résolu, j'ai mis sur le manifeste la "Clé pour les applications de navigateur (avec référents)" au lieu de la "Clé pour les applications Android (avec certificats)" de la console Google API.

0

Dans mon cas, j'avais entré un nom de package incorrect dans le gestionnaire d'API de l'API Google - Informations d'identification - "Limiter l'utilisation à vos applications Android". Veillez à entrer le nom de package correct (comme dans le fichier AndroidManifest.xml) et les empreintes digitales SHA correctes (pour le débogage et la production).  Google API Manager Screenshot

0
stefan.m