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
:
- Android MapView getMap () devuelve null
- Error en la autorización de Google Maps para Android API v2
- Android Geocoder getFromLocationName devuelve siempre null
- Crash en Google Maps causado por un puntero nulo en android.widget.EdgeEffect. <Init>
- Dibujar línea punteada en google maps v2 en lugar de sólido
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"/>
- Asegúrese de que la "API de Google Maps para Android v2" esté habilitada. Estoy recibiendo este error cuando intento implementar Google Maps
- Tiempo de viaje entre dos ubicaciones en Google Map Android API V2
- Cómo enviar información de ubicación de google maps a través de SMS como enlace
- Estilo del botón de google maps de Android
- Google Maps Android API v2 ClassNotFound Error de tiempo de ejecución
- Google Maps V2 - Android - Obtener el nivel de zoom actual
- MapFragment Google Maps API v2 Fuera de error de memoria / pérdida de memoria
- Cómo dibujar el texto en el marcador predeterminado de google map v2
Solucioné este problema siguiendo estos pasos:
En la consola de API de Google Developer
- Haga clic en Crear una nueva clave de Android ...
- En cmd.exe / Terminal:
keytool -list -v -keystore mystore.keystore
- Contraseña:
android
- Ahora ingrese la
SHA1 key;package name
para depurar y presione enter - Introduzca la
SHA1 key;package name
para su liberación - 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.