2013-05-05 5 views
12

Es ist mir klar, wie Sie einen Debug-Schlüssel für die Verwendung mit Google Maps v2-Bibliothek erhalten, und auch, wie Sie einen Freigabeschlüssel erhalten. Momentan sieht der relevante Abschnitt meiner Manifest-Datei wie folgt aus:Android Google Maps v2 - Debug-Schlüssel vs Freigabeschlüssel

Der relevante Schlüssel ist unkommentiert, der andere ist kommentiert.

Kann jemand eine bequeme Möglichkeit angeben, diese Belästigung zu vermeiden, diese Teile der Manifest-Datei zu kommentieren/auszukommentieren, immer wenn eine Debug- anstelle einer Release-Version benötigt wird?

+0

Das neue Gradle-basierte Build System sollte in diesem Bereich helfen. Sie sollten in der Lage sein, Debug- und Produktions-String-Ressourcen zu definieren und Ihre API-Schlüssel in einer davon zu speichern. – CommonsWare

+0

Können Sie mir bitte Schritte geben, damit Google Maps im Freigabemodus funktioniert? Ich habe viele Dinge ausprobiert, aber ich konnte nicht herausfinden, wie ich das lösen könnte. – guisantogui

+0

Die Antwort wurde von Michal gegeben: es ist möglich, mehrere Fingerabdrücke + Paketnamen für denselben Schlüssel anzugeben. Google-Dokumentation scheint mir sehr genau: https://developers.google.com/maps/documentation/android-api/signup –

Antwort

33

Mit Version 2 APIs können Sie den gleichen Schlüssel für die Freigabe und das Debuggen verwenden. Bearbeiten Sie in Ihrer Google API-Konsole Ihre erlaubten Android-Apps und geben Sie in jeder Zeile Ihren Debug/Release-Schlüssel und dann Ihren App-Namen ein. Sie können mehrere Zeilen verwenden, dann wird es mit beiden Schlüsseln funktionieren.

+1

Großartig! Tatsächlich hatte ich diese kleine Anzeige in der APi-Konsole nicht bemerkt: Ein SHA1-Zertifikat-Fingerabdruck und Paketname (getrennt durch ein Semikolon) pro Zeile. Danke Michal. –

+0

Es wird immer noch empfohlen, verschiedene API Keys pro Release-Typ zu verwenden, oder? Ich dachte, es ging um Sicherheit, nicht um Bequemlichkeit. –

3

Verschiedene Google Map API-Schlüssel für Debug-Build und Release-Build in build.gradle definiert werden:

... 
android { 
    ... 
    buildTypes { 
     debug { 
      resValue "string", "google_maps_api_key", "<debug_key>" 
      ... 
     } 
     release { 
      resValue "string", "google_maps_api_key", "<release_key>" 
      ... 
     } 
    } 
} 

Gerade <debug_key> und <release_key> mit Ihrem tatsächlichen Schlüssel ersetzen.

und beziehen sich auf diesen Ressourcenwert in AndroidManifest.xml:

<meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="@string/google_maps_api_key"/> 

Diese Lösung auch in der folgenden Stack-Überlauf Frage beschrieben wird:

Manage Google Maps API Key with Gradle in Android Studio

+0

Manifest-Werte können nicht in String-Ressourcen gespeichert werden, wenn Sie eine Lokalisierung für mehrere Sprachen haben. In Studio wird das Erstellen von Releases nicht zugelassen. – Lera

Verwandte Themen