El SDK de Navigation está disponible a través de Maven. Después del creas tu proyecto de desarrollo, puedes integrar el SDK en él usando uno de los siguientes enfoques.
Usa Maven para el SDK de Navigation (recomendado)
A continuación, se usa el repositorio de Maven google()
, que es la forma más simple y recomendada de agregar el SDK de Navigation a tu proyecto.
Agrega la siguiente dependencia a tu configuración de Gradle o Maven: reemplazando el marcador de posición
VERSION_NUMBER
por la versión deseada del SDK de Navigation para Android.Gradle
Agrega lo siguiente a tu
build.gradle
a nivel de módulo:dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }
Maven
Agrega lo siguiente a tu
pom.xml
:<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>
Si tienes alguna dependencia que utilice el SDK de Maps, debes excluir las en cada dependencia declarada que se base en el SDK de Maps.
Gradle
Agrega lo siguiente a tu
build.gradle
de nivel superior:allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies. This is to ensure there won't be // multiple copies of Google Maps SDK in your binary, as the Navigation // SDK already bundles the Google Maps SDK. configurations { implementation { exclude group: 'com.google.android.gms', module: 'play-services-maps' } } }
Maven
Agrega lo siguiente a tu
pom.xml
:<dependencies> <dependency> <groupId>project.that.brings.in.maps</groupId> <artifactId>MapsConsumer</artifactId> <version>1.0</version> <exclusions> <!-- Navigation SDK already bundles Maps SDK. You must exclude it to prevent duplication--> <exclusion> <!-- declare the exclusion here --> <groupId>com.google.android.gms</groupId> <artifactId>play-services-maps</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
Configura la compilación
Luego de crear el proyecto, puedes establecer la configuración de un compilar y usar correctamente el SDK de Navigation.
Actualizar propiedades locales
- En la carpeta Gradle Scripts, abre el archivo
local.properties
y agregaandroid.useDeprecatedNdk=true
Cómo actualizar la secuencia de comandos de compilación de Gradle
Abre el archivo
build.gradle (Module:app)
y usa los siguientes lineamientos para actualizar la configuración y cumplir con los requisitos del SDK de Navigation. Considera configurar también las opciones de optimización.Configuración obligatoria para el SDK de Navigation
- Establece
minSdkVersion
en 23 o un valor superior. - Establece
targetSdkVersion
en 33 o un valor superior. - Agrega un parámetro de configuración de
dexOptions
que aumente eljavaMaxHeapSize
. - Establece la ubicación de las bibliotecas adicionales.
- Agrega
repositories
ydependencies
para el SDK de Navigation. - Reemplaza los números de versión en las dependencias con los más recientes. versiones disponibles.
Configuración opcional para disminuir el tiempo de compilación
- Habilita la reducción de código y recursos se contrae con R8/ProGuard para quitar de las dependencias el código y los recursos que no se usan. Si el paso de R8/ProGuard tarda demasiado en ejecutarse, puedes habilitar multidex para el trabajo de desarrollo.
- Reduce la cantidad de traducciones de idiomas incluidas en la compilación: Establece
resConfigs
para un lenguaje durante el desarrollo. Para la compilación final, configuraresConfigs
para los idiomas que realmente usas. De forma predeterminada, Gradle incluye cadenas de recursos para todos los idiomas compatibles con el SDK de Navigation.
Cómo agregar la expansión de sintaxis para la compatibilidad con Java8
- Si compilas tu app con el complemento de Android para Gradle 4.0.0 o una versión posterior, el complemento extiende la compatibilidad para usar varias APIs del lenguaje Java 8. Consulta Expansión de sintaxis en Java 8 asistencia para obtener más información. Consulta el siguiente ejemplo de fragmento de secuencia de comandos de compilación para ver cómo de compilación y dependencia.
- Establece
A continuación, se muestra un ejemplo de la secuencia de comandos de compilación de Gradle para la aplicación. Consulta el apps de ejemplo para conjuntos actualizados de dependencias, como la versión de El SDK de Navigation que usas puede estar un poco adelantado o detrás de esta documentación.
apply plugin: 'com.android.application'
ext {
navSdk = "__NAVSDK_VERSION__"
}
android {
compileSdk 33
buildToolsVersion='28.0.3'
defaultConfig {
applicationId "<your id>"
// Navigation SDK supports SDK 23 and later.
minSdkVersion 23
targetSdkVersion 33
versionCode 1
versionName "1.0"
// Set this to the languages you actually use, otherwise you'll include resource strings
// for all languages supported by the Navigation SDK.
resConfigs "en"
multiDexEnabled true
}
dexOptions {
// This increases the amount of memory available to the dexer. This is required to build
// apps using the Navigation SDK.
javaMaxHeapSize "4g"
}
buildTypes {
// Run ProGuard. Note that the Navigation SDK includes its own ProGuard configuration.
// The configuration is included transitively by depending on the Navigation SDK.
// If the ProGuard step takes too long, consider enabling multidex for development work
// instead.
all {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
// Navigation SDK for Android and other libraries are hosted on Google's Maven repository.
google()
}
dependencies {
// Include the Google Navigation SDK.
// Note: remember to exclude Google Play service Maps SDK from your transitive
// dependencies to avoid duplicate copies of the Google Maps SDK.
api "com.google.android.libraries.navigation:navigation:${navSdk}"
// Declare other dependencies for your app here.
annotationProcessor "androidx.annotation:annotation:1.7.0"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.9'
}
Agrega la clave de API a tu app
En esta sección, se describe cómo almacenar tu clave de API para que tu app pueda hacer referencia a ella de manera más segura. No debes incluir la clave de API en el sistema de control de versión, por lo que te recomendamos almacenarla en el archivo secrets.properties
, que se encuentra en el directorio raíz de tu proyecto. Para obtener más información sobre el archivo secrets.properties
, consulta los archivos de propiedades de Gradle.
Para optimizar esta tarea, te recomendamos que uses el complemento Secrets Gradle para Android.
Si deseas instalar el complemento Secrets Gradle para Android en tu proyecto de Google Maps, haz lo siguiente:
-
En Android Studio, abre tu archivo
build.gradle.kts
obuild.gradle
de nivel superior y agrega el siguiente código al elementodependencies
enbuildscript
.Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
Groovy
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
-
Abre el archivo
build.gradle.kts
obuild.gradle
a nivel del módulo y agrega el siguiente código al elementoplugins
.Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- En el archivo
build.gradle.kts
obuild.gradle
a nivel del módulo, asegúrate de que quetargetSdk
ycompileSdk
estén configurados a 34. - Guarda el archivo y sincroniza tu proyecto con Gradle.
-
Abre el archivo
secrets.properties
en tu directorio de nivel superior y agrega el siguiente código. ReemplazaYOUR_API_KEY
por tu clave de API. Almacena tu clave en este archivo, ya quesecrets.properties
no se registra en un sistema de control de versión.NAV_API_KEY=YOUR_API_KEY
- Guarda el archivo.
-
Crea el archivo
local.defaults.properties
en tu directorio de nivel superior, en la misma carpeta en la que se encuentra el archivosecrets.properties
, y agrega el siguiente código.NAV_API_KEY=DEFAULT_API_KEY
El propósito de este archivo es proporcionar una ubicación de copia de seguridad de la clave de API si no se encuentra el archivo
secrets.properties
, de modo que no fallen las compilaciones. Esto puede ocurrir si clonas la app desde un sistema de control de versión que omitesecrets.properties
y aún no creaste un archivosecrets.properties
localmente para proporcionar tu clave de API. - Guarda el archivo.
-
En tu archivo
AndroidManifest.xml
, ve acom.google.android.geo.API_KEY
y actualizaandroid:value attribute
. Si la etiqueta<meta-data>
no existe, créala como un elemento secundario de la etiqueta<application>
.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
Nota:
com.google.android.geo.API_KEY
es el nombre de metadatos recomendado para la clave de API. Se puede usar una clave con este nombre para la autenticación en varios Las API basadas en Google Maps en la plataforma de Android, incluida la API de SDK de Navigation para Android. Para la retrocompatibilidad, la API también admite el nombrecom.google.android.maps.v2.API_KEY
. Este legado permite la autenticación con la API de Google Maps para Android 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 arroja una excepción. -
En Android Studio, abre
build.gradle.kts
a nivel del módulo.build.gradle
y edita la propiedadsecrets
. Si el botón La propiedadsecrets
no existe, agrégala.Edita las propiedades del complemento para establecer
propertiesFileName
ensecrets.properties
, establecerdefaultPropertiesFileName
enlocal.defaults.properties
y establece cualquier otra propiedad.Kotlin
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file. // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }
Groovy
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file. // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }
Incluye las atribuciones requeridas en tu aplicación
Si usas el SDK de Navigation para Android en tu app, debes incluir lo siguiente: texto de atribución y licencias de código abierto como parte de los avisos legales de tu app sección.
Puedes encontrar el texto de atribución y las licencias de código abierto obligatorios en el archivo ZIP del SDK de Navigation para Android:
NOTICE.txt
LICENSES.txt
Si eres cliente de entregas de movilidad o flotas de motor
Si eres cliente de Mobility o Fleet Engine Deliveries, obtén información sobre la facturación en la documentación de Mobility. Para obtener más información registrando transacciones, consulta Configurar la facturación Registrar transacciones facturables Informes Registra transacciones facturables (Android).