Google Maps Mobile SDK for Work anterior: Android

Para clientes con licencia anterior de Google Maps APIs for Worko Google Maps API for Business, la Google Maps Android API se adquiere como parte de la Google Maps Mobile SDK for Work. En esta sección de la documentación se describe la configuración para ese SDK.

Esta página está destinada únicamente a clientes con una licencia anterior de Maps APIs for Work o Maps API for Business. Esta página no está destinada a clientes con el nuevo Google Maps APIs Premium Plan, que se encuentra disponible desde enero de 2016.

Informació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. Descargar el SDK.
  2. Agregar el SDK a un proyecto de Android nuevo o existente.
  3. Agregar tu clave de API al manifiesto de la app.
  4. Especificar los permisos de Android necesarios y la versión 2 de OpenGL ES.
  5. Agregar un mapa.

Descargar el SDK

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

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

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

Opción 2: Descargar el SDK usando Android SDK Manager

En Android Studio:

  1. Selecciona Tools > Android > SDK Manager.
  2. Selecciona Appearance & Behavior > System Settings > Android SDK.
  3. Haz clic en la pestaña SDK Update Sites.
  4. Haz clic en el ícono más (+) para agregar un sitio nuevo.
  5. Ingresa un nombre, como “Google Maps APIs”, y la URL: https://dl.google.com/geosdk/android-m4b-addon.xml
  6. Haz clic en OK.
  7. Haz clic en la pestaña SDK Tools.
  8. Selecciona Google Maps Mobile SDK for Work y haz clic en OK 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 hallar instrucciones sobre cómo usarlo como una herramienta independiente.

Agregar el SDK a tu proyecto

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

La Google Maps Android API para Google Maps Mobile SDK for Work está disponible en dos formatos: un paquete aar (google-maps-sdk-m4b.aar) integrado y un módulo de biblioteca (google-maps-sdk-m4b_lib). Puedes elegir el formato que se adecue mejor a tus necesidades.

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

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

  1. Dirígete hasta Google Maps Mobile SDK for Work en esta ubicación:

    <android-sdk>/extras/google/maps_for_business_sdk

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

  3. Agrega el siguiente código a tu archivo build.gradle:

    dependencies {
        compile(name:'google-maps-sdk-m4b', ext:'aar')
    
    }
    
    repositories {
        flatDir{
            dirs 'libs'
        }
    }
    
  4. Completa los pasos de configuración descritos a continuación.

Opción 2: Importar el SDK como 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 de Android Studio:

  1. En Android Studio, elige la opción para importar un módulo nuevo (File -> New -> Import Module).
  2. Dirígete 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 Choose.

  4. Acepta los valores predeterminados en el asistente de importación.
  5. Haz clic en Finish. 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 una dependencia de módulo en el archivo build.gradle de tu app:

    compile project(':googlemapssdkm4b_lib')

Convertir cualquier configuración existente en la que se use Google Play Services

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

Obtener una clave de la API y agregarla a tu app

Genera una clave de API para tu proyecto y agrégala a AndroidManifest.xml, como se describe a continuación. Debes establecer una clave de API restringida de Android.

Tu clave de API te identifica como un cliente de Google Maps Mobile SDK for Work, y habilita la asistencia y cuota adquirida para tu aplicación. Puedes generar tu clave de API en una cuenta que tenga habilitado el servicio Google Maps Mobile SDK usando una combinación del nombre del paquete de tu aplicación y su certificado digital.

La clave de API se basa en una forma corta del certificado digital de tu app. Todas las apps de Android están firmadas con un certificado digital cuya clave privada posees. (Consulta la guía de Android sobre la firma de tus aplicaciones para obtener más información sobre los certificados digitales.)

Mostrar información sobre el certificado de tu aplicación

La restricción de clave de Android API se basa en una versión corta del certificado digital de tu app, que se conoce como huella digital SHA-1.

Obtener la información del certificado desde Android Studio

Si sigues las instrucciones de la guía de introducción a Google Maps Android API, Android Studio creará un archivo google_maps_api.xml útil que incluya las credenciales de tu app.

Elige uno de los siguientes métodos para obtener tu clave de API en Android Studio:

  • Un método rápido y simple: usa el vínculo proporcionado en el archivo google_maps_api.xml que creó Android Studio.
    1. Copia el vínculo proporcionado en el archivo google_maps_api.xml y pégalo en el navegador. El vínculo te permite acceder a la Google API Console y proporciona la información necesaria sobre esta a través de parámetros de dirección URL, lo cual reduce la intervención manual por tu parte.
    2. Sigue las instrucciones para crear un nuevo proyecto en la Google API Console o selecciona un proyecto existente.
    3. Crea una clave de API con restricción de Android para tu proyecto.
    4. Copia la clave de API obtenida, regresa a Android Studio y pega la clave de API en el elemento <string> del archivo google_maps_api.xml.
  • Un método un poco más lento: usa la credencial proporcionada en el archivo google_maps_api.xml que creó Android Studio.
    1. Copia las credenciales proporcionadas en el archivo google_maps_api.xml.
    2. Accede a la Google API Console en tu navegador.
    3. Usa las credenciales copiadas para agregar tu app a una clave de API existente o para crear una clave de API nueva.

Obtener la información del certificado por ti mismo

Si no sigues las instrucciones de la guía de introducción cuando crees tu app, deberás obtener tú mismo la huella digital SHA-1 para tu certificado. Primero, verifica que estés usando el certificado correcto. Puedes tener dos certificados:

  • Un certificado de depuración: Android SDK Tools genera este certificado automáticamente cuando realizas una versión de depuración. Usa este certificado solo con aplicaciones que estés probando. No intentes publicar una aplicación firmada con un certificado de depuración. El certificado de depuración se describe con más detalle en Firma en modo de depuración de la documentación para desarrolladores de Android.
  • Un certificado de lanzamiento: Android SDK Tools genera este certificado cuando realizas una versión de lanzamiento. También puedes generar este certificado mediante el programa keytool. Usa este certificado cuando estés listo para lanzar tu aplicación al mundo.

Sigue los pasos que se indican a continuación para mostrar la huella digital SHA-1 de un certificado mediante el programa keytool con el parámetro -v. Para obtener más información sobre Keytool, consulta la documentación de Oracle.

Certificado de depuración

Visualización de la huella digital del certificado de depuración

  1. Busca tu archivo de depuración de depósito de claves. El nombre del archivo es debug.keystore y se crea la primera vez que compilas tu proyecto. De manera predeterminada, se guarda en el mismo directorio que tus archivos del Android Virtual Device (AVD):

    • macOS y Linux: ~/.android/
    • Windows Vista y Windows 7: C:\Users\your_user_name\.android\
  2. Indica la huella digital SHA-1:

    • En el caso de Linux u OS X, abre una ventana de la terminal y escribe lo siguiente:

      keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    • Para Windows Vista y Windows 7, ejecuta lo siguiente:

      keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Deberías ver un resultado similar a esto:

Alias name: androiddebugkey
Creation date: Jan 01, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
     MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
     SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
     Signature algorithm name: SHA1withRSA
     Version: 3
Certificado de lanzamiento

Visualización de la huella digital del certificado de lanzamiento

  1. Busca tu archivo de depósito de claves para certificado de lanzamiento. No existe una ubicación ni un nombre predeterminados para el archivo de depósito de claves de lanzamiento. Si no especificas uno al momento de compilar tu aplicación para el lanzamiento, la compilación dejará tu archivo .apk sin firmar y deberás firmarlo antes de poder publicarlo. Para el certificado de lanzamiento, también necesitas el alias del certificado y las contraseñas del depósito de claves y del certificado. Puedes indicar los alias de todas las claves en un archivo de depósito de claves al ingresar lo siguiente:

    keytool -list -keystore your_keystore_name

    Reemplaza your_keystore_name por la ruta de acceso completamente calificada y el nombre del archivo de depósito de claves, incluida la extensión .keystore. Se te pedirá que ingreses la contraseña del depósito de claves. A continuación, keytool muestra todos los alias del archivo de depósito de claves.

  2. En una ventana de terminal o de comandos, escribe lo siguiente:

    keytool -list -v -keystore your_keystore_name -alias your_alias_name

    Reemplaza your_keystore_name por la ruta de acceso completamente calificada y el nombre del archivo de depósito de claves, incluida la extensión .keystore. Reemplaza your_alias_name por el alias que le asignaste al certificado cuando lo creaste.

Deberías ver un resultado similar a esto:

Alias name: <alias_name>
Creation date: Feb 02, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4cc9b300
Valid from: Mon Feb 02 08:01:04 UTC 2013 until: Mon Feb 02 18:05:04 PST 2033
Certificate fingerprints:
    MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6B:AC:F9
    SHA1: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:90:AF:A1:66:6E:44:5D:75
    Signature algorithm name: SHA1withRSA
    Version: 3

La línea que comienza con SHA1 incluye la huella digital SHA-1 del certificado. La huella digital es una secuencia de 20 números hexadecimales de dos dígitos separados por dos puntos.

Consulta la guía de Android sobre la firma de tus aplicaciones para obtener más información sobre los certificados digitales.

Verifica que tu cuenta esté habilitada para el servicio de

Google Maps Mobile SDKEl equipo

Google Maps Mobile SDK habilita el servicio Google Maps Mobile SDK cuando te registras para el Google Maps Mobile SDK for Work. El servicio se habilita en un proyecto nuevo. Luego, puedes obtener una clave de API desde Google API Console.

Nota: Solo el propietario inicial del proyecto podrá ver el servicio de Google Maps Mobile SDK. Si deseas solicitar una autorización para que los propietarios adicionales del proyecto puedan ver el servicio, presenta un caso no técnico en el Google Cloud Support Portal

Verifica que tu cuenta se haya habilitado de la siguiente manera:

  1. Dirígete a la Google API Console e inicia sesión con tu cuenta de Google.
  2. Selecciona el proyecto Google Maps Mobile SDK for Work creado al ordenar el Google Maps Mobile SDK for Work. El nombre del proyecto comienza con Google Maps APIs for Business or Google Maps for Work or Google Maps. Si aún no adquiriste acceso al SDK, comunícate con el sector de [ventas].
  3. En la lista de API del Panel de control, verifica que esté habilitado el Google Maps Mobile SDK**.

Obtén una clave de API a través de la Google API Console

Una vez que el servicio Google Maps Mobile SDK for Work esté habilitado para tu proyecto, debes generar una clave nueva.

págin1. Dirígete a la a Credentials del Google API Console e inicia sesión con tu cuenta de Google. 1. Selecciona el proyecto Google Maps Mobile SDK for Work creado al ordenar el Google Maps Mobile SDK for Work. El nombre del proyecto comienza con Google Maps APIs for Business or Google Maps for Work or Google Maps. Si aún no adquiriste acceso al SDK, comunícate con el sector de [ventas]. 1. En la lista de claves de API, busca una clave con una restricción de Android. 1. Si tu proyecto ya no tiene una clave de API con restricción de Android, crea una seleccionando Create credentials y API key. 1. En el diálogo resultante, selecciona Restrict key. 1. En la sección Restrictions, selecciona Android apps, ingresa luego tu huella digital SHA-1 y el nombre del paquete. Por ejemplo:

    BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
    com.example.android.mapexample
  1. Haz clic en Save.

    Tu nueva clave de API con restricción de Android aparece en la lista de claves de API de tu proyecto. Una clave de API es una cadena de caracteres similar a la siguiente:

    AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
    

Agrega la claves de la API a tu aplicación.

Sigue los pasos que se indican a continuación para incluir la clave de API en el manifiesto de tu aplicación, que se encuentra en el archivo AndroidManifest.xml.

  1. En AndroidManifest.xml, agrega el siguiente elemento como elemento secundario (o hijo) del elemento <application>; para ello, insértalo antes de la etiqueta de cierre </application>:
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="YOUR_API_KEY"/>
        

    Cambia tu clave de API por YOUR_API_KEY en el atributo value. Este elemento establece la clave com.google.android.geo.API_KEY en el valor de tu clave de API.

  2. Guarda AndroidManifest.xml y vuelve a compilar tu aplicación.

Nota: Como se mostró anteriormente, com.google.android.geo.API_KEY es el nombre de metadatos recomendado para la clave de API. Una clave con este nombre se puede usar para autenticar en múltiples API basadas en Google Maps en la plataforma Android, incluida la Google Maps Android API. En lo que respecta a compatibilidad con versiones anteriores, la API también admite el nombre com.google.android.maps.v2.API_KEY. Este nombre heredado permite la autenticación en la Android Maps API v2 únicamente. Una aplicación puede especificar solo uno de los nombres de metadatos de la clave de API. Si se especifican ambos, la API retorna una excepción.

Especifica permisos de apps

Especifica los permisos que necesita tu aplicación agregando elementos de <uses-permission> como hijos del elemento <manifest> en AndroidManifest.xml.

Permisos de ubicación

Si tu aplicación accede a la ubicación actual del usuario habilitando la capa “Mi ubicación”, debes solicitar permisos de ubicación según lo descrito en la guía para los datos de ubicación.

Permiso de almacenamiento externo

Si tu objetivo es la versión 8.3 o posteriores del SDK Google Play Services, ya no necesitarás el permiso de WRITE_EXTERNAL_STORAGE para usar la Google Maps Android API.

Si tu objetivo son las versiones anteriores del SDK de Google Play Services, debes solicitar el permiso de android.permission.WRITE_EXTERNAL_STORAGE permission.

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

Nota: Si tu aplicación está orientada a la API de nivel 23 (Android 6.0), para el cual es necesario usar los permisos de tiempo de ejecución, debes apuntar a la versión 8.3, o a una posterior, del SDK de Google Play Services.

Permisos que se combinan automáticamente en tu manifiesto

Los permisos siguientes se definen en el manifiesto de Google Play Services y se combinan automáticamente en el manifiesto de tu aplicación, al momento de compilación. No es necesario que los agregues de manera explícita a tu manifiesto:

Especifica la versión 2 OpenGL ES

La Google Maps Android API usa OpenGL ES 2 para representar el mapa. La siguiente configuración se define en el manifiesto de Google Play Services y se combina automáticamente con el manifiesto de tu app en el momento de la compilación. No es necesario que la agregues 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 sean compatibles con OpenGL ES versión 2.

Agregar un mapa

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

Nota: Este código no debe usarse en una app de producción.

  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);
        }
    }
    

Compilar y ejecutar tu app

Compila y ejecuta tu app. Visualizarás un mapa.

Solución de problemas:

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

  • Si el número de métodos de tu proyecto excede el límite, es posible que veas un mensaje de error:

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

    Si deseas obtener información sobre causas y soluciones, consulta la guía de desarrolladores de Android para crear apps con métodos de más de 65K.

  • Si tu proyecto ya depende de Guava, es posible que recibas mensajes de error 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 Android API disponible con el Google Maps Mobile SDK for Work fue diseñada para ser muy similar a la Google Maps Android API estándar. Por lo tanto, el proceso de migración es simple.

  1. Descarga la Google Maps Android API para el Google Maps Mobile SDK for Work y agrega el SDK a tu proyecto como se describe anteriormente.
  2. Reemplaza todas las referencias al paquete de com.google.android.gms.maps por com.google.android.m4b.maps.
  3. Asigna el prefijo m4b_ a todas las referencias a los atributos de diseño de 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 claves entre el uso de la Google Maps Android API estándar y el uso de la API con el Google Maps Mobile SDK for Work.

  Google Maps Android API estándar Google Maps Mobile SDK for Work
Nombre del paquete com.google.android.gms.maps com.google.android.m4b.maps
Atributos XML del archivo de diseño Usa el nombre de atributo sin prefijo. Por ejemplo: mapType. Asigna el prefijo m4b_ a todos los nombres de atributos. Por ejemplo: m4b_mapType. Para obtener información detallada, consulta la documentación sobre atributos XML.
Ubicación de descarga Se incluye con Google Google Play Services. Disponible como biblioteca estática.
Canales de asistencia Asistencia de la comunidad Acceso a asistencia premium
Condiciones Sujeto a las Google Maps APIs Condiciones de servicio. Sujeto a las condiciones del Google Maps Mobile SDK for Work.

Google Play Services

Para la Google Maps Android API estándar , se necesitan el APK y la biblioteca de cliente de Google Play Services. Cuando se usa con el Google Maps Mobile SDK for Work, sin embargo, para el SDK solo se debe instalar el Google Play Services APK en el dispositivo de destino. La biblioteca de cliente no es necesaria.

Al migrar tu aplicación al Google Maps Mobile SDK for Work, no es necesario que quites el Google Play Services SDK de tu proyecto. Sin embargo, debes quitar cualquier referencia al paquete com.google.android.gms.maps. Google Play Services contiene una versión de la Google Maps Android API y otros servicios de Google. Si usas Google Play Services en tu app para emplear otras Google API, asegúrate de aplicar solo el Google Maps Mobile SDK for Work SDK (el paquete com.google.android.m4b.maps) para acceder a Maps.

Aunque la biblioteca de cliente de Google Play Services no es necesaria, tal vez te resulte útil incluirla para aprovechar otras Google API, como Google+ o la Location API.

Ejemplo de código

En el repositorio de Google Maps de GitHub se incluyen varios ejemplos que ilustran el uso de la Google Maps Android API en tu app de Android. Ten en cuenta que en los ejemplos de apps se usa el paquete com.google.android.gms.maps, no el com.google.android.m4b.maps que se emplea con el Google Maps Mobile SDK for Work. Para los ejemplos de apps también se necesita el Google Play Services SDK, ya que usan las Location API para partes de la demostración.

A su vez, puedes encontrar fragmentos de código en cada página de la guía del desarrollador.

Documentación

La principal fuente de información sobre el Google Maps Mobile SDK for Workes la documentación de referencia y del desarrollador disponible en otras partes de nuestro sitio.