Cómo comenzar a usar el plan premium en Android

Nota: El plan premium de Google Maps Platform ya no está disponible para registros o clientes nuevos.

Tu licencia del plan premium de Google Maps Platform proporciona asistencia mejorada para el SDK de Maps para Android. En este documento, se explica cómo crear una app para Android que use el SDK de Maps para Android con el plan premium.

Descripción general

Sigue las instrucciones de esta página para descargar el SDK, configurar tu proyecto y agregar un mapa. A continuación, se ofrece un resumen de los pasos que deben seguirse:

  1. Descarga el SDK.
  2. Agrega el SDK a un proyecto de Android nuevo o existente.
  3. Agrega tu clave de API al manifiesto de la app.
  4. Especifica los permisos de Android necesarios y el requisito de la versión 2 de OpenGL ES.
  5. Agrega un mapa.

Descarga el SDK

Puedes descargar el SDK como una biblioteca estática o usar Android SDK Manager.

Opción 1: Descarga el SDK como una biblioteca estática

Descarga la versión más reciente como una biblioteca estática.

Opción 2: Descarga el SDK a través de Android SDK Manager

En Android Studio:

  1. Selecciona Herramientas > Android > SDK Manager.
  2. Selecciona Apariencia y comportamiento > Configuración del sistema > SDK de Android.
  3. Haz clic en la pestaña Sitios de actualización de SDK.
  4. Haz clic en el ícono de signo más (+) para agregar un sitio nuevo.
  5. Ingresa un nombre, como "Google Maps for Work" y la URL: https://dl.google.com/geosdk/android-m4b-addon.xml.
  6. Haz clic en Aceptar.
  7. Haz clic en la pestaña Herramientas del SDK.
  8. Selecciona SDK para dispositivos móviles de Google Maps for Work y haz clic en Aceptar para completar la descarga.

Android Studio instala la biblioteca en <android-sdk-folder>/extras/google/maps_for_business_sdk/.

Consulta la guía de Android SDK Manager para obtener instrucciones sobre cómo usar este componente como una herramienta independiente.

Agrega el SDK a tu proyecto

A continuación, puedes encontrar las instrucciones para Android Studio. Si usas una herramienta diferente, consulta las instrucciones sobre el uso de la línea de comandos en la documentación de Android.

El SDK de Maps para Android del plan premium está disponible en dos formatos: un paquete aar (google-maps-sdk-m4b.aar) y un módulo de biblioteca (google-maps-sdk-m4b_lib). Puedes elegir el formato que mejor se adapte a tus necesidades.

Opción 1: Importa el SDK desde el paquete aar

Sigue estos pasos para incluir el paquete aar (google-maps-sdk-m4b.aar) en tu proyecto de Android Studio:

  1. Navega hasta el plan premium de Google Maps Platform en esta ubicación:

    <android-sdk>/extras/google/maps_for_business_sdk

  2. Copia el archivo google-maps-sdk-m4b.aar en el directorio libs de tu proyecto (crea el directorio si no existe).

  3. Agrega el siguiente código al archivo build.gradle de tu app:

    dependencies {
        implementation(name:'google-maps-sdk-m4b', ext:'aar')
        implementation 'com.android.support:support-v4:+'
        implementation 'com.android.support:appcompat-v7:+'
        implementation 'com.google.android.gms:play-services-basement:15.0.1'
        implementation 'com.google.android.gms:play-services-base:15.0.1'
    }
    
    repositories {
        flatDir{
            dirs 'libs'
        }
    }
    
  4. En el archivo build.gradle de tu app, establece compileSdkVersion en la versión más reciente.

  5. Completa los pasos de configuración como se describe a continuación.

Opción 2: Importa el SDK como un módulo de biblioteca

En lugar de usar el archivo aar, puedes seguir estos pasos para agregar el módulo de biblioteca de SDK (google-maps-sdk-m4b_lib) a un proyecto existente en Android Studio:

  1. En Android Studio, elige la opción para importar un módulo nuevo (Archivo -> Nuevo -> Importar módulo).
  2. Navega hasta el SDK en esta ubicación:

    <android-sdk>/extras/google/maps_for_business_sdk

  3. Selecciona el directorio google-maps-sdk-m4b_lib y haz clic en Elegir.

  4. Acepta los valores predeterminados en el asistente de importación.

  5. Haz clic en Finalizar. Verás un archivo de texto en el que se resumirán los resultados del proceso de importación.

  6. Asegúrate de que la biblioteca se incluya en el archivo settings.gradle:

    include ':googlemapssdkm4b_lib'

  7. Agrega el siguiente código al archivo build.gradle de tu app:

    dependencies {
        implementation project(':googlemapssdkm4b_lib')
        implementation 'com.android.support:support-v4:+'
        implementation 'com.android.support:appcompat-v7:+'
        implementation 'com.google.android.gms:play-services-basement:15.0.1'
        implementation 'com.google.android.gms:play-services-base:15.0.1'
    }
    
  8. En el archivo build.gradle de tu app, establece compileSdkVersion en la versión más reciente.

Convierte cualquier configuración existente que use Servicios de Google Play

  1. Si tienes una app que usa Servicios de Google Play, reemplaza todas las referencias al paquete com.google.android.gms.maps por com.google.android.m4b.maps.
  2. Agrega el prefijo m4b_ a todas las referencias a los atributos de diseño XML. Por ejemplo, m4b_mapType y m4b_cameraZoom.

Especifica la configuración en el manifiesto de la app

Una app para Android que usa el SDK de Maps para Android debe especificar las siguientes opciones de configuración en su archivo de manifiesto, AndroidManifest.xml:

Clave de API

Genera una clave de API para tu proyecto y agrégala a AndroidManifest.xml, como se describe en la guía de autenticación.

Permisos

Para especificar los permisos que necesita tu aplicación, agrega los elementos <uses-permission> como secundarios del elemento <manifest> en el archivo AndroidManifest.xml.

Permisos de ubicación

Si tu aplicación habilita la capa Mi ubicación para acceder a la ubicación actual del usuario, debes solicitar permisos de ubicación como se describe en la guía sobre los datos de ubicación.

Permiso de almacenamiento externo

Si te orientas a la versión 8.3 o una posterior del SDK de Servicios de Google Play, ya no necesitarás el permiso WRITE_EXTERNAL_STORAGE a fin de usar Maps SDK for Android.

Si te orientas a versiones anteriores del SDK de Servicios de Google Play, debes solicitar el permiso android.permission.WRITE_EXTERNAL_STORAGE.

<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Nota: Si tu app se orienta a la API nivel 23 (Android 6.0), que requiere el uso de permisos de tiempo de ejecución, deberías orientarte a la versión 8.3 o una posterior del SDK de Servicios de Google Play.

Permisos que se combinan automáticamente con tu manifiesto

Los siguientes permisos se definen en el manifiesto de Servicios de Google Play y se combinan automáticamente con el manifiesto de tu app en el tiempo de compilación. No es necesario que los agregues de manera explícita a tu manifiesto:

Versión 2 de OpenGL ES

El SDK de Maps para Android renderiza el mapa con la versión 2 de OpenGL ES. La siguiente configuración se define en el manifiesto de Servicios de Google Play y se combina automáticamente con el manifiesto de tu app en el tiempo de compilación. Es decir, no es necesario que agregues la configuración de manera explícita a tu manifiesto:

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

Esto notifica el requisito a los servicios externos. En particular, evita que Google Play Store muestre tu app en dispositivos que no admiten la versión 2 de OpenGL ES.

Agrega un mapa

La manera más sencilla de verificar que tu app está configurada correctamente es agregar un mapa simple.

  1. En activity_main.xml, agrega el siguiente fragmento.

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:name="com.google.android.m4b.maps.MapFragment"/>
    
  2. En MainActivity.java, agrega el siguiente código.

    package com.example.mapdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

Compila y ejecuta tu app

Compila y ejecuta tu app. Deberías ver un mapa.

Solución de problemas:

  • Si no ves un mapa, asegúrate de haber completado todos los pasos que aparecen antes en este documento. En especial, comprueba que tu clave de API sea correcta y que tu cuenta esté habilitada para el servicio del plan premium de Google Maps Platform.

  • Si la cantidad de métodos en tu proyecto excede el límite, es posible que recibas el siguiente error:

    Unable to execute dex: method ID not in [0, 0xffff]: 65536

    A fin de obtener información sobre causas y soluciones, consulta la sección donde se explica cómo compilar apps con más de 65,000 métodos en la Guía para desarrolladores de Android.

  • Si tu proyecto ya depende de Guava, es posible que recibas errores de conflicto de clases como el siguiente:

    com.android.dex.DexException: Multiple dex files define Lcom/google/common/annotations/Beta

    Para resolver este problema, puedes borrar la copia de Guava del directorio google-maps-sdk-m4b_lib/libs.

Más información

Cómo migrar una app existente

La API de Android disponible con el plan premium se diseñó para ser muy similar al SDK de Maps para Android estándar. Por lo tanto, el proceso de migración es simple.

  1. Descarga el SDK de Maps para Android correspondiente al plan premium y agrégalo a tu proyecto como se describió antes.
  2. Reemplaza todas las referencias al paquete com.google.android.gms.maps por com.google.android.m4b.maps.
  3. Agrega el prefijo m4b_ a todas las referencias a los atributos de diseño XML. Por ejemplo, m4b_mapType y m4b_cameraZoom.
  4. Genera una clave de API nueva para tu proyecto y agrégala a AndroidManifest.xml, como se describe en la guía de autenticación.
  5. Compila tu app.

Comparación de versiones

En la siguiente tabla, se describen las diferencias clave entre el uso del SDK de Maps para Android estándar y el uso de la API con el plan premium.

  SDK de Maps para Android estándar Plan premium
Nombre del paquete com.google.android.gms.maps com.google.android.m4b.maps
Atributos XML en el archivo de diseño Usa el nombre del atributo sin prefijo. Por ejemplo: mapType. Agrega el prefijo m4b_ a todos los nombres de atributos. Por ejemplo: m4b_mapType. Para obtener información detallada, consulta la documentación sobre los atributos XML.
Ubicación de descarga Se incluye con Servicios de Google Play. Está disponible como biblioteca estática.
Canales de asistencia Asistencia basada en la comunidad Acceso a la Asistencia premium
Condiciones Sujeto a las Condiciones del Servicio de Google Maps Platform Sujeto a las condiciones del plan premium de Google Maps Platform

Servicios de Google Play

El SDK de Maps para Android estándar requiere el APK y la biblioteca cliente maps (com.google.android.gms:play-services-maps) de Servicios de Google Play. Sin embargo, si se usa con el plan premium de Google Maps Platform, el SDK solo requiere que el APK de Servicios de Google Play esté instalado en el dispositivo de destino. No se requiere la biblioteca cliente maps.

Cuando migres tu aplicación al plan premium, debes quitar la biblioteca cliente maps de tu proyecto, junto con cualquier referencia al paquete com.google.android.gms.maps. Asegúrate de usar solo el SDK del plan premium (el paquete com.google.android.m4b.maps) para acceder a Maps.

Puedes incluir de forma gratuita otras bibliotecas cliente de Servicios de Google Play para aprovechar otras API de Google, como Google Analytics o Google Location and Activity Recognition.

Código de muestra

El repositorio de Google Maps en GitHub incluye una serie de muestras que ilustran cómo usar el SDK de Maps para Android en tu app para Android. Ten en cuenta que las apps de muestra utilizan el paquete com.google.android.gms.maps, no el paquete com.google.android.m4b.maps que se usa con el plan premium. Las apps de muestra también requieren el SDK de Servicios de Google Play, ya que usan las API de Location para algunas partes de la demostración.

Además, puedes encontrar fragmentos de código en cada página de la Guía para desarrolladores.

Documentación

La principal fuente de información sobre el plan premium de Google Maps Platform es la documentación de referencia y para desarrolladores disponible en otras partes de nuestro sitio.