2015-09-12 7 views
13

Ich weiß, das ist eine häufige Frage und in der Regel die Lösung ist es, einen separaten Schlüssel für die Veröffentlichung zu generieren. Ich habe es mehrmals gemacht und mein API-Schlüssel in der Entwicklerkonsole enthält zwei verschiedene SHA1-Fingerabdrücke: einen für das Debuggen von AndroidStudio und für die Freigabe von meinem eigenen Schlüsselspeicher. Ich habe die App mit demselben Keystore signiert und Google Maps Android API v2 in der Konsole aktiviert. Dennoch zeigt die Kartenaktivität nur den weißen Bildschirm mit "Google" in der linken unteren Ecke.Google Maps sind nicht in signierten apk

Gibt es Vorschläge, wie Sie das Problem lösen können?

+0

also hast du die google maps api key ?? wo hast du es hingelegt?? Wenn Sie Schwierigkeiten haben, erstellen Sie eine neue Kartenaktivität. Dann wird Ihnen die XML-Datei angezeigt, in die Sie den Schlüssel einfügen müssen, und dann diese Aktivität löschen. – Tasos

+0

@Tacos Ich lege es in den automatisch generierten String-Wert in google_maps_api.xml, der danach in die Manifest-Datei geschrieben wird – mityakoval

+0

Ok, cool. Siehst du Fehler in der Protokoll Katze, in Bezug auf Karten API Schlüssel? Wenn keine Fehler auftreten, wenn Sie Ihren Finger auf der Karte bewegen, erscheint die Karte auf magische Weise. Das ist mir vorher passiert, weil mein Fragment-Layout geschraubt wurde. – Tasos

Antwort

33

Es klingt, als ob Sie nur den API-Schlüssel im Debug google_maps_api.xml eingegeben haben. Außerdem klingt es so, als ob Sie den gleichen API-Schlüssel für das Debuggen und Freigeben verwenden, aber Sie müssen es immer noch in der Datei google_maps_api.xml im Freigabeordner sowie im Debug-Ordner eingeben.

Es ist ein wenig verwirrend, denn wenn das Projekt in Android-Ansicht ist, können Sie nur die Debug-Datei sehen (obwohl es (debug) in Klammern daneben in dieser Ansicht haben sollte).

Um die Release-Version zu ändern, wechseln Sie mithilfe des Dropdown-Menüs oben links im Projektexplorer in die Projektansicht. Erweitern Sie dann app/src/ und Sie werden die Unterordner debug und release sehen. Dort sollten Sie zwei separate Dateien google_maps_api.xml unter debug/res/values und release/res/values sehen.

Stellen Sie sicher, dass der API-Schlüssel in der Datei google_maps_api.xml unter dem Ordner release/res/values eingetragen ist, da dies der ist, der für die signierte Release-APK verwendet wird.

enter image description here

+1

Vielen Dank! Das war das Problem! Ich habe die Android-Ansicht verwendet und nicht vermutet, dass es zwei verschiedene Ordner dafür gibt. Ich frage mich, warum es nirgends erwähnt wird. Trotzdem danke! – mityakoval

+1

@Daniel Nugent Ich habe einen Api-Schlüssel in beiden Werte-Ordnern hinzugefügt (Debug & Release). Das Map-Fragment wird nicht angezeigt. –

+0

@payaltuteja Zeigen Ihre Logs irgendwelche Fehler bezüglich der Karte? –

9

Wenn wählen Sie Google App Spiele Signing dann Ihre App SHA-1 anders sein wird, wenn es freigegeben wird.

Da Google Upload-Zertifikat entfernen, und dann durch einen neuen, die Ihre App anmelden,

So haben Sie die neuen SHA-1 Schlüssel kennen.

(Sie müssen nicht das Protokoll für die Freigabe folgen und die neue SHA-1 erzeugte Spur)

enter image description here


Sie können die 2 SHA-1 Tasten vergleichen.

Origin answer

+0

Ich habe das App Signing Certificate SHA1 wie oben gezeigt, aber die Karte ist nicht sichtbar. –

+0

Danke Mann ... es funktioniert für mich. –

+0

Sie sind herzlich willkommen @AmitabhaBiswas – wajeeh

0

Sie eine Version von SHA1 verwenden. Sie müssen SHA1 erneut generieren, indem Sie die Eingabeaufforderung verwenden, nachdem Sie apk signiert haben.

Schritte SHA1 zu regenerieren ist gehen der Befehl wie unten an cmd und geben:

C:\Program Files\Java\jre1.8.0_91\bin>keytool -list -v -keystore 

"C: Ihr Schlüsselspeicher Pfad \ \ Schlüsselspeicher \ android.jks"

1) gehen Sie zu Ihrem Java in der Programmdatei offene Java-Version wie jre1.8.0)

2) Öffnen Sie bin Ordner und führen Sie Befehl wie oben gefolgt von Ihrem Schlüsselspeicher Pfad, den Sie generiert haben, wenn Sie die signierte Apk generiert nach dem Ausführen dieses Befehls auf cmd müssen Sie das Passwort der signierten App und Ihre SHA1 wird gerariert werden.

3) Kopieren Sie die sha1 und fügen Sie sie in console.developer mit Ihrem Paketnamen in Ihre API-Taste ein.

0

ich eine Menge Dinge haben diese aber keine Lösung zu beheben nicht mein Problem beheben diese Problem zu beheben ich diese Dinge tat

  1. erstellen unterzeichnet apk mit neuen Schlüsselspeicher-Datei sicher, dass die von Ihnen erstellten, dass im Freigabemodus
  2. Nachdem Sie die signierte Apk erstellt haben, sollten Sie den Keystore-Pfad beachten, in dem Sie Ihre Keystore-Datei speichern.
  3. Sie müssen auch Ihren Google Map-API-Schlüssel mit Ihrem Veröffentlichungsmodus und Debug-Modus verwenden, Sie können den gleichen API-Schlüssel mit beiden verwenden, aber stellen Sie sicher, dass Sie zwei verschiedene sha-Schlüssel für Ihren einzigen API-Schlüssel in der Google-Konsole hinzufügen.
  4. Sie sollen den Weg der Binärordner von Java von c-Laufwerk gehen zu verwenden, da Schlüsselspeicher Werkzeug innerhalb Binärordner ist so nehmen Ihre Datei wie C: \ Programme \ Java \ jdk1.8.0_11 \ sind , so dass Sie sollte diesen Weg zu Ihrem android-Studio Terminal folgen den Pfad zu C ändern: \ Programme \ Java \ jdk1.8.0_11 \ bin und dann diesen Befehl eingeben:

    keytool -list -v -keystore "/Users/NT/Desktop/generalkey.jks"(adress of your keystore file) 
    
  5. und dies, indem Sie Sie bekommen der sha-Schlüssel kopieren Sie diesen Schlüssel

  6. Go to google console/cred Entials
  7. Jetzt gehen Sie zu Ihrer API, die Sie sehen Bearbeitungsoption gehen Sie, um zu bearbeiten und hinter Ihrem sha-Schlüssel hinein und speichern Sie es.
  8. Führen Sie Ihren Code aus.