Android: automáticamente elige debug / release Maps v2 api key?

Estoy usando Google Maps v2 API en mi proyecto. En Google Maps v2, la clave de API de depuración / release se define en AndroidManifest.xml . He visto el enlace, pero en ese mapa clave se define en un archivo de diseño xml no en AndroidManifest.xml . ¿Puedo definir las claves de depuración y de liberación de mi proyecto en AndroidManifest.xml ?

Quiero algo como esto en AndroidManifest.xml :

Si el modo de depuración:

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

Si el modo de liberación:

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

Solucioné este problema siguiendo estos pasos:

En la consola de API de Google Developer

  1. Haga clic en Crear una nueva clave de Android ...
  2. En cmd.exe / Terminal: keytool -list -v -keystore mystore.keystore
  3. Contraseña: android
  4. Ahora ingrese la SHA1 key;package name para depurar y presione enter
  5. Introduzca la SHA1 key;package name para su liberación
  6. Haga clic en Crear

Ahora usa esta clave de API para tu proyecto

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

Una de las mejores formas de utilizar el archivo build.gradle en la última versión de Android 5.0 y Android 6.0 (API 20, 21, 22, 23)

Bueno, puede utilizarlos simplemente sin crear sabores de producto en gradle . Este es otro ejemplo que podemos lograr a través de Gradle . Usted puede lograrlo con dos sencillos pasos.

  • Agregue valor personalizado al archivo build.gradle de los archivos manifestplaceholders .

Vea abajo

 buildTypes { debug { manifestPlaceholders = [ mapApiKeyValue:"GHjaSyAjlyp3O831lgaonHMXsd-_DpQ3002x3S4"] } release { manifestPlaceholders = [ mapApiKeyValue:"AIzaSyAuMGDLr2HeuRed4JA0CrdYYdZRjeC3EA"] } } 
  • Edite el archivo de manifiesto como a continuación.

Parte de mi archivo de manifiesto

  <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="${mapApiKeyValue}" /> 

Esta solución funciona para los últimos Android 5.0 y Android 6.0 (API 20, 21, 22, 23)

Para las organizaciones que necesitan mantener claves separadas, puede colocarlas en directorios independientes en Android Studio. Asegúrese de que el subdirectorio de src que utiliza coincide con un sabor o buildType

Desde la construcción de su proyecto con Gradle :

 To build each version of your app, the build system combines source code and resources from: src/main/ - the main source directory (common to all variants) src/<buildType>/ - the build type source directory src/<flavorName>/ - the flavor source directory 

En projectroot/yourapp/build.gradle :

 buildTypes { debug { runProguard false debuggable true } release { runProguard true debuggable false ... } 

En projectroot/yourapp/src/main/AndroidManifest.xml :

 ... <application android:name=".MyApplication" android:theme="@style/Theme"> <!-- Don't put your key here --> ... 

En projectroot/yourapp/src/debug/AndroidManifest.xml , califique completamente el nombre de la aplicación.

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:name="com.hipmunk.android.HipmunkApplication"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="yourdebugkey" /> </application> </manifest> 

En projectroot/yourapp/src/release/AndroidManifest.xml :

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:name="com.hipmunk.android.HipmunkApplication"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="release key" /> </application> </manifest> 

Ya que está utilizando gradle puede hacer lo siguiente:

Construir un gradiente

 android { .. .. ... buildTypes { debug { resValue "string", "google_maps_api_key", "[YOUR DEV KEY]" } release { resValue "string", "google_maps_api_key", "[YOUR PROD KEY]" } } } 

Y en tu AndroidManifest.xml

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

De esta manera solo tienes un AndroidManifest.xml y estableces un valor basado en tu tipo de compilación. Espero que esto ayude.

  • Cajón de navegación google maps v2, cajón de bloqueo de mapas
  • Mostrar ruta en Google Maps API v2 en Android
  • Google Maps Android API v2 SoporteMapFragmento de pérdida de memoria
  • Android Maps API v2 con marcadores personalizados
  • Android Maps V2 pérdida de memoria LocationClientHelper
  • Administrar la clave de la API de Google Maps con Gradle en Android Studio
  • Eliminar el icono de ubicación predeterminado del usuario
  • ¿Cómo puedo obtener las coordenadas de un mapa al toque con MapFragment (no MapView)?
  • Mostrar u ocultar los marcadores depende del nivel de zoom
  • La API de Google Maps v2 no funciona
  • Cómo dibujar Polyline interactivo en la ruta google maps v2 android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.