wake-up-neo.com

Google Maps V2 funktioniert in der Produktion nicht mit korrektem Schlüssel

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).

App production screen

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?

28
ForeverLearning

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.

37
stkent

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" />
8
Chris Toews

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.

4
Steve Tauber

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

3

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. 

0
Adrian C.

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

0

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.  Google API Manager Screenshot

0
stefan.m