Ich habe große Probleme, wenn Google Maps in einer Android-App in der Produktion funktioniert. Das ist es, was ich gerade bekomme (der Boden ist nur Werbung).
Wichtige Schritte, denen ich gefolgt bin:
1) Ich habe sichergestellt, dass ich den korrekten SHA1-Produktionsschlüssel erhalten habe, und habe ihn sowohl in der Google Console-API als auch in der App implementiert (Sie geben den von Google angegebenen Schlüssel). Ich habe zwei Schlüssel registriert - einen für das Debuggen und einen für die Produktion
2) Internet, Standort usw. funktioniert
3) Die App arbeitet im DEBUG-Modus, funktioniert jedoch nicht, wenn sie über USB signiert und auf dem Gerät installiert ist. Ich habe die SHA 1-Signatur des Zeichens dreifach geprüft usw.
4) Das MapsFragment stammt von der in Android Studio verfügbaren Vorlage.
Im Produktionsmodus zeigt der Protokollierer Folgendes an:
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
Dieser Fehler sagt offensichtlich, dass mit meiner auth etwas nicht stimmt? Was mache ich falsch?
Basierend auf der Logcat-Ausgabe Ihres debugierbaren Release-Builds:
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
anscheinend haben Sie den Platzhalter für den api-Schlüssel YOUR_KEY_HERE
im Manifest (oder in einer separaten api-Schlüsseldatei, je nach Ihrer Konfiguration) nicht überschrieben. Ersetzen Sie diese Zeichenfolge, wo immer sie lebt, durch Ihren tatsächlichen Schlüssel, und Sie sollten sich gut aufgehoben fühlen.
Edit: Dieses Tutorial erklärt, falls es Ihrer Konfiguration entspricht, wahrscheinlich, warum Sie dies nur für Release-Builds sehen:
Kehren Sie zu Android Studio zurück und fügen Sie den API-Schlüssel in den Abschnitt YOUR_KEY_HERE der Datei ein:
Beachten Sie, dass diese Schritte die Google Maps-Unterstützung für die Debug-Version des Anwendungspakets aktiviert haben. Der API-Schlüssel muss auch zu der google_maps_api.xml-Datei in den Werten von MapDemo -> app -> src -> release -> res -> hinzugefügt werden, wenn die Release-Version der Anwendung zum Erstellen bereit ist.
Ich hatte dieselben Probleme und schlug meinen Kopf für ein paar Tage gegen die Wand. Ich habe alle Beiträge darüber gelesen, wie der richtige Schlüssel eingesetzt wird. Ich habe immer den richtigen Schlüssel in meine google_maps_api.xml-Datei eingefügt. StKent oben erwähnt, um sicherzustellen, dass Sie die tatsächliche Zeichenfolge in AndroidManifest.xml überschreiben. Das hat es für mich behoben.
Was ich hatte, als es nicht funktionierte: In AndroidManifest.xml:
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="@string/google_maps_key" />
und in google_maps_api.xml:
<string name="google_maps_key"
templateMergeStrategy="preserve"
translatable="false">AIza_the actual key</string>
Was ich geändert habe, damit es funktioniert Ich habe meine AndroidManifest.xml so geändert, dass sie Folgendes enthält:
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="AIzsa_the actual key" />
Bei der Verwendung von Android Studio zum Generieren der Google Maps-Aktivität werden Ihre Builds für Gradels Build ignoriert und der Standardcode debug.keystore
verwendet. Der SHA1 in google_maps_api.xml
basiert auf diesem Standard. Stellen Sie beim Erstellen der Berechtigung in der Google API-Konsole sicher, dass Sie Ihre Produktions- und Debugging-Version von SHA1 verwenden, wenn Sie die Standardeinstellung verwenden.
debug und Produktionsschlüssel werden unterschiedlich sein. Wenn Sie den Debug-Schlüssel für den Freigabemodus verwenden, können Sie die Google-Map nicht anzeigen. Wenn Sie im Freigabemodus den Google Map-Schlüssel ändern, sollten Sie das Projekt bereinigen und dann apk exportieren.
weitere Informationen erhalten Sie https://developers.google.com/maps/documentation/Android/start
um private SHA1 aus dem Debug-Schlüsselspeicher zu erhalten
keytool -list -v -keystore ~ / .Android/debug.keystore -alias androiddebugkey -storepass-Android -keypass Ihr_App-Kennwort
um mehr zu sehen
SHA-1 Fingerprint des Keystore-Zertifikats
oder Sie können das Eclipse-Tool verwenden, um mithilfe des Exportmenüs einen privaten SHA1-Schlüssel zu generieren
In meinem Fall wurde der graue Bildschirm durch eine benutzerdefinierte Implementierung von HostnameVerifier
verursacht, die das Laden der Kacheln verhinderte.
Ich hoffe, dass dies in Zukunft jemand anderem helfen wird.
Gelöst habe ich anstelle des "Schlüssels für Android-Apps (mit Zertifikaten)" aus der Google API Console das Manifest mit dem "Schlüssel für Browser-Apps (mit Verweisern)" versehen
In meinem Fall hatte ich den falschen Paketnamen in den API-Manager von Google API - Anmeldeinformationen - "Verwendung auf Android-Apps einschränken" eingegeben. Stellen Sie sicher, dass Sie den richtigen Paketnamen (wie in AndroidManifest.xml) und die richtigen SHA Fingerabdrücke (für Debugging und Produktion) eingeben.