2017-03-06 2 views
8

Ich habe eine Android-App, die Google Maps verwendet. Plötzlich hörte es im Freigabemodus auf zu arbeiten. Die Kartenansicht zeigt Google Play-Dienste aktualisieren auf dem Emulator und auf echten Geräten. Im Internet recherchieren alle über die API-Schlüsseldatei, aber das ist nicht mein Problem!"Google Play-Dienste werden aktualisiert" in Google Maps API

ich jede mögliche andere Kombination von Freigabeeinstellungen ausprobiert haben, und Ich habe herausgefunden, dass das Problem tritt auf, wenn ich debuggable = false in der Build-Konfiguration festgelegt (mit debuggable = true es funktioniert). Ich kann nicht verstehen, warum Maps nicht funktionieren, weil die APK natürlich nicht debuggbar ist. Ich habe auch mehrere Versionen von Google Play-Diensten ausprobiert, sogar die neuesten (10.2.0). Kein Unterschied.

Was kann ich tun? Bitte helfen Sie mir, da ich keine neue Version im Play Store veröffentlichen kann, bis ich diesen Fehler behoben habe.

enter image description here

+0

Ist der API-Schlüssel für Google Maps Android API aktiviert? –

+0

Natürlich @ShakSmith –

+0

@GuidoLodetti Verwenden Sie Proguard? –

Antwort

3

"Wenn ich auf false gesetzt debug es nicht mehr funktioniert"

Dies lässt vermuten, Ihr API-Zugriff auf Debug-Modus beschränkt. In Anbetracht der Tatsache, dass es keine separaten API-Schlüssel für das Debuggen und Freigeben gibt, würde es so aussehen, als wäre Ihr Schlüssel an Ihr Debug-Zertifikat gebunden.

zu zitieren „Mehr über API-Schlüssel Einschränkungen“ auf der documentation:

Sie eine Beschränkung optional hinzufügen. Bei Android-Apps, beschränken Sie den Schlüssel zu Ihrer App SHA-1 Fingerabdruck

Wenn Sie eine solche Einschränkung an der richtigen Stelle, wird der unterschiedlichen Fingerabdruck des Freigabebescheinigung brechen Sie Ihre API-Zugriff.

Werfen Sie einen Blick auf die „Getting die Zertifikatinformationen selbst“ auf der oben verlinkten Dokumentation die richtige (release) Zertifikat Fingerabdruck

+0

Der SHA-1 ist korrekt. Wenn ich debuggable auf true setze und es mit Produktionszertifikaten signiere, funktioniert alles korrekt. Wenn ich auf falsch umschalte, bricht alles. –

+0

Sie verwenden die Produktionszertifizierung für den Debug-Modus? dann verwendest du was für tatsächliche Produktionsaufbauten? –

+0

Bevor ich diese Frage gepostet habe, habe ich versucht zu analysieren, was das Problem verursachen könnte, da beim Debuggen alles funktioniert und wenn ich auf Google Play veröffentliche, funktioniert es nicht mehr. Es stellt sich heraus, dass der einzige Fehler, der den Fehler verursacht, "debuggable" zu "false" ist. Wenn ich versuche, das Produktionszertifikat allein zu verwenden, tritt kein Problem auf. –

0

Hatte gleiche Problem zu erhalten. Versuchen Sie, Ihren Google Play-Dienst von Gradle zu aktualisieren und überprüfen Sie es dann. Vielleicht hilft es dir. Eine weitere Sache, bitte verwenden Sie die neueste Version und das Ziel, bitte stellen Sie auch auf mehr als oder 17 ein.

0

hatte die gleichen „Fehler“, konnte durch die Verwendung dieser Schritte gelöst werden:

https://productforums.google.com/forum/#!topic/play/ey7qIRBYj-o

Ich weiß, wie Sie sich fühlen, wenn Sie ständig eine Nachricht erhalten, ‚Google Play-Dienste gestoppt‘ . Um dieses Problem zu beheben, empfehle ich Ihnen, den Cache für Google Play-Dienste zu leeren (gehen Sie zu Einstellungen> Apps oder Anwendungsmanager> Google Play-Dienste> Cache leeren> OK) und Google Play Store. Sobald Sie den Cache gelöscht haben, starten Sie Ihr Gerät neu auf überprüfen Sie, ob es funktioniert.

2

Ich hatte das gleiche Problem, und es gelang mir, es zu beheben. Das Problem tritt auf, wenn die Option minifyEnabled auf true gesetzt ist (wenn false, tritt das Problem nicht auf).

Kurz gesagt, was ich tat, war die Zeile hinzufügen:

-keep class com.google.** {*; } 

in die proguard Regeldatei (proguard-rules.pro), Google zu vermeiden Dienste Abhängigkeiten spielen verschleiert aus ist. Zumindest in meinem Fall scheint die resultierende APK nicht viel größer zu sein, wenn diese Regel hinzugefügt wird.

Ich denke, das Problem tritt auf, wenn die Verwendung von Kartenkomponenten von einem anderen Modul (zum Beispiel in einer gemeinsam genutzten Bibliothek) erfolgt, aber ich habe es nicht überprüft.