2016-03-20 21 views
0

Ich war in der Lage, eine Release-APK erfolgreich in Android Studios zu bauen.Android Google-Dienste: API-Schlüssel und SHA-1-Fingerabdruck für Freigabe und Debugging

Meine App nutzt einige Dienste von Google wie Google App lädt und Google Places für Android.

Um diese Dienste zu erhalten, ich hatte einen API-Schlüssel auf der Google-Entwickler-Konsole, die wie folgt aussieht registrieren:

Abschnitt

enter image description here

Ich bin nicht sicher über die Paketnamen und SHA-1 Fingerabdruck einen API-Schlüssel erhalten.

Wenn ich sowohl eine Debug- als auch eine Release-Version meiner App habe (nehmen wir an, der Paketname lautet com.myapp), setze ich die com.myapp zweimal als Paketnamen ein, setze aber die Release- und Debug-SHA- 1 jeweils für jeden Paketnamen? So

:

com.myapp (SHA-1 fingerprint) S1:2D:3F etc 
com.myapp (SHA-1 fingerprint) D2:1W:2V etc 

Ich habe versucht, das zu tun, aber bisher die Release-Version der App scheint nicht zu wollen, überhaupt arbeiten.

APP_INVITE sagt:

Kein Android-Client-ID für Paketnamen com.myapp gefunden wird. (APPINVITE_CLIENT_ID_ERROR)

PLACES Auto-Vervollständigen sagt:

Fehler der automatischen Vervollständigung Vorhersage API-Aufruf erhalten: Den Status {status = PLACES_API_INVALID_APP, Auflösung = null}

Antwort

0

OK - nach einigen Untersuchungen, Ja, Sie geben Ihren Paketnamen zweimal an und dann legen Sie den SHA-1-Fingerabdruck für die Release- und Debug-Version separat ab. Das wird PLACES funktionieren lassen.

Auch von meinen Untersuchungen bemerkte ich, dass der Fehler APP_INVITE auf keine Client-ID für das Paket gefunden zeigte. Beachten Sie, dass sich dies auf Ihre OAuth 2.0-Client-IDs bezieht, die Sie in Ihrer Google Developer Console unter Ihren API-Schlüsseln finden. Das Ändern des SHA-1-Schlüssels (es gibt keine Option, in diesem Fall eine Entwicklungs-SHA-1 und eine Debud-SHA-1 zu verwenden) führt dazu, dass APP_INVITE funktioniert.

1

Es ist ein wenig verwirrend, ich denke, die beste Lösung, um solche Szenarien loszuwerden, ist ein applicationIdSuffix, so dass Sie (und anderer Service) hinzufügen unterscheiden konnten zwischen bauen: com.myapp.beta für Build und com.myapp für die Freigabe.

Ich würde Ihnen empfehlen, einen Blick auf diese ausführliche Anleitung zu nehmen: http://medyo.github.io/2015/different-android-app-resources-gradle-build-type/

Hoffnung, dass Ihre Frage beantwortet

+0

Ich fürchte, Sie sind ein wenig zu spät. Ich habe mein Problem gelöst. Siehe meine Antwort unten. – Simon

+0

Ja, ich habe es gesehen, es funktioniert, aber Sie werden nicht in der Lage sein zu unterscheiden, welcher Schlüssel welchem ​​Build entspricht? Ich empfehle dringend, ID-Suffixe zu verwenden. – Mehdi

+0

Guter Punkt. Leider habe ich die App bis zur letzten Minute zur Veröffentlichung freigegeben, daher muss ich jetzt meine Schnellkorrekturmethode anwenden und werde Ihre Lösung in Zukunft verwenden.Nochmals vielen Dank +1 – Simon