trazar studio ruta google example ejemplo android gradle android-studio key google-maps-android-api-2

ruta - Administrar la clave API de Google Maps con Gradle en Android Studio



gradle google maps api (4)

Sé que Gradle es poderoso y me gustaría administrar las claves API para el desarrollo / producción de Google Maps

Actualmente, siempre necesito comentar manualmente una línea y descomentar la otra para que funcione. ¿Hay alguna manera de hacerlo automáticamente en Gradle con alguna configuración de lanzamiento personalizada?

<!-- MapView v2 API --> <uses-library android:name="com.google.android.maps" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" /> <!-- PROD <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" /> -->


Como está usando gradle, puede hacer lo siguiente:

build.gradle

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

Y en su AndroidManifest.xml

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

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


En Android Studio (marcado con la versión 0.8.11) puede agregar la Actividad de Google Maps (Actividad Nuevo-> Google-> Google Maps) a su proyecto y Android Studio generará los archivos necesarios para usted, solo debe insertar sus claves. También hay instrucciones generadas. Busque los archivos google_maps_api.xml en sus carpetas de depuración / res / values ​​/ y release / res / values.


En Android Studio, existe el concepto de tipos de construcción y sabores, y puede usarlos para obtener lo que necesita. Los tipos de compilación son versiones diferentes de la aplicación que son funcionalmente idénticas pero pueden diferir en el código de depuración. Por defecto, todos los proyectos de Android Gradle tienen tipos de compilación de depuración y versión.

Los sabores son versiones de tu aplicación que son funcionalmente diferentes; puede tener gratis y pagado, por ejemplo. Por defecto, sus proyectos de Android Gradle no tienen ningún sabor, pero puede agregarlos.

Los tipos de compilación y los sabores se combinan (en lo que se llama una variante ) cuando se hace una compilación; en este ejemplo, puede tener construcciones freeDebug, freeRelease, paidDebug y paidRelease.

El sistema de construcción le permite anular fácilmente una cantidad de cosas en cada tipo / sabor / variante; Una de las cosas que puede hacer es anular partes del archivo AndroidManifest.xml. El sistema de compilación fusiona los diferentes fragmentos elegibles de manifiestos en un manifiesto maestro cuando construye una variante particular.

Con ese fondo en la mano, en su caso es posible que desee tener una clave de API diferente en la versión de depuración de su aplicación frente a la versión de lanzamiento. La versión de depuración es lo que usará en su desarrollo diario, depuración y prueba, y la versión de lanzamiento es lo que implementaría para los usuarios.

Para hacerlo, no coloque la clave de la API de Google Maps en el archivo AndroidManifest.xml de la aplicación principal en src/main ; en su lugar, agregue dos nuevas carpetas, src/debug y src/release y agregue allí los archivos AndroidManifest.xml. No incluya información completa en esos manifiestos nuevos, sino solo lo que es único sobre lo que se necesita para esa variante en particular. Sus archivos de origen se verán así:

Su archivo src/debug/AndroidManifest.xml contendrá esto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" /> </manifest>

y src/release/AndroidManifest.xml tendrá esto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" /> </manifest>

Para reiterar, no coloque ninguna clave API en el archivo src/main/AndroidManifest.xml .

Si por alguna razón no quiere usar tipos de compilación para diferenciar, puede configurar los sabores dev y prod y dividirlo de esa manera; la anulación manifiesta funciona de la misma manera.


Puede lograr esto con la función de marcador de posición manifiesto: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Placeholder-support

en el archivo build.gradle:

buildTypes { debug { manifestPlaceholders = [ google_map_key:"your_dev_key"] } release { manifestPlaceholders = [ google_map_key:"prod_key"] } }

y luego en manifiesto:

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

Eso es lo mismo para diferentes teclas para diferentes sabores y esta es una solución más limpia que el uso de recursos de cadena.