En esta página, se explica cómo integrar el SDK de Navigation en tu proyecto de desarrollo.
Agrega el SDK de Navigation a tu proyecto
El SDK de Navigation está disponible a través del repositorio
de
Maven de Google.
Puedes agregar el SDK a tu proyecto con la configuración de build.gradle de Gradle o pom.xml de Maven.
Agrega la siguiente dependencia a tu configuración de Gradle o Maven, y reemplaza el marcador de posición
VERSION_NUMBERpor la versión deseada del SDK de Navigation para Android.Gradle
Agrega lo siguiente a tu
build.gradlea nivel del 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 use el SDK de Maps, debes excluir la dependencia en cada dependencia declarada que se base en el SDK de Maps.
Gradle
Agrega lo siguiente a tu
build.gradlede nivel superior:allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies to make sure 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
Después de crear el proyecto, puedes configurar los parámetros para una compilación exitosa y el uso del SDK de Navigation.
Actualiza las propiedades locales
- En la carpeta Gradle Scripts, abre el archivo
local.propertiesy agregaandroid.useDeprecatedNdk=true.
Actualiza 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 de modo que cumpla con los requisitos del SDK de Navigation y considera establecer también las opciones de optimización.Configuración obligatoria para el SDK de Navigation
- Establece
minSdkVersionen 24 o una versión posterior. - Establece
targetSdkVersionen 36 o una versión posterior. - Agrega un parámetro de configuración
dexOptionsque aumente eljavaMaxHeapSize. - Establece la ubicación de las bibliotecas adicionales.
- Agrega
repositoriesydependenciespara el SDK de Navigation. - Reemplaza los números de versión en las dependencias por las versiones más recientes disponibles.
Configuración opcional para disminuir el tiempo de compilación
- Habilita la reducción de código y la reducción de recursos con R8/ProGuard para quitar el código y los recursos sin usar de las dependencias. Si el paso R8/ProGuard tarda demasiado en ejecutarse, considera habilitar multidex para el trabajo de desarrollo.
- Reduce la cantidad de traducciones de idiomas incluidas en la compilación: Establece
resConfigspara un idioma durante el desarrollo. Para la compilación final, estableceresConfigspara los idiomas que usas. De forma predeterminada, Gradle incluye cadenas de recursos para todos los idiomas compatibles con el SDK de Navigation.
Agrega la expansión de sintaxis para la compatibilidad con Java 8
- Si compilas tu app con el complemento de Android para Gradle 4.0.0 o versiones posteriores, el complemento extiende la compatibilidad para usar varias APIs del lenguaje Java 8. Consulta Compatibilidad con la expansión de sintaxis de Java 8 para obtener más información. Consulta el siguiente fragmento de secuencia de comandos de compilación de ejemplo para obtener información sobre las opciones de compilación y dependencia.
- Para Android versión 7.3.0 y versiones posteriores, debes usar Gradle 8.11.1, el complemento de Android para Gradle versión 8.10.0 y la biblioteca de expansión de sintaxis
com.android.tools:desugar_jdk_libs_nio:2.0.3. - La biblioteca de expansión de sintaxis debe habilitarse para el módulo
appy cualquier módulo que dependa directamente del SDK de Navigation.
- Establece
A continuación, se muestra un ejemplo de la secuencia de comandos de compilación de Gradle para la aplicación. Consulta las apps de muestra para obtener conjuntos actualizados de dependencias, ya que la versión del SDK de Navigation que usas puede estar un poco más avanzada o atrasada que 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 34
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_nio:2.0.3'
}
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.
Para instalar el complemento Secrets Gradle para Android y almacenar tu clave de API, haz lo siguiente:
-
En Android Studio, abre el archivo
build.gradlede nivel raíz y agrega el siguiente código al elementodependenciesenbuildscript.Groovy
buildscript { dependencies { // ... classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
Kotlin
buildscript { dependencies { // ... classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
-
Abre el archivo
build.gradlea nivel de tu app y agrega el siguiente código al elementoplugins.Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- Si usas Android Studio, sincroniza tu proyecto con Gradle.
-
Abre el archivo
local.propertiesen el directorio de nivel de proyecto y, luego, agrega el siguiente código. ReemplazaYOUR_API_KEYpor tu clave de API.MAPS_API_KEY=YOUR_API_KEY
-
Puedes agregar la clave de API a tu archivo
AndroidManifest.xmlo proporcionarla de forma programática.- Agrega tu clave de API a
AndroidManifest.xml:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />Nota:
com.google.android.geo.API_KEYes el nombre de metadatos recomendado para la clave de API. Se puede utilizar una clave con este nombre para autenticar varias APIs basadas en Google Maps en la plataforma de Android, incluido el SDK de Navigation para Android. Respecto de la retrocompatibilidad, la API también admite el nombrecom.google.android.maps.v2.API_KEY. Este nombre heredado solo permite la autenticación con la versión 2 de la API de Google Maps para Android. Una aplicación puede especificar solo uno de los nombres de metadatos de la clave de API. Si se especifican ambos, la API arrojará una excepción. - Proporciona la clave de API de forma programática:
El complemento Secrets Gradle permite que la clave esté disponible en la clase
BuildConfig. En la inicialización de tu app (por ejemplo, en el métodoApplication.onCreate()), llama al método de la siguiente manera:Kotlin
- Agrega las siguientes instrucciones de importación:
import com.google.android.libraries.navigation.NavigationApi
- Agrega lo siguiente a tu método
Application.onCreate():NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
Java
- Agrega las siguientes instrucciones de importación:
import com.google.android.libraries.navigation.NavigationApi;
- Agrega lo siguiente a tu método
Application.onCreate():NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
Nota: Cuando usessetApiKey(), ten en cuenta lo siguiente:- Proporciona una clave de API no nula y no vacía.
- Llama a
setApiKey()solo una vez durante el ciclo de vida de tu aplicación. El método arroja unaIllegalStateExceptionsi se llama más de una vez. - Llama a
setApiKey()antes de inicializar cualquier otro componente del SDK de Navigation, comoNavigator. - La clave que proporcionas con este método anula cualquier clave de API en tu
AndroidManifest.xml. - Usa el SDK de Navigation versión 7.6 o una posterior.
- Agrega las siguientes instrucciones de importación:
- Agrega tu clave de API a
Incluye las atribuciones obligatorias en tu app
Si usas el SDK de Navigation para Android en tu app, debes incluir el texto de atribución y las licencias de código abierto como parte de la sección de avisos legales de tu app.
Puedes encontrar el texto de atribución obligatorio y las licencias de código abierto en el archivo ZIP del SDK de Navigation para Android:
NOTICE.txtLICENSES.txt
Si eres cliente de Servicios de movilidad o Fleet Engine Deliveries
Si eres cliente de Servicios de movilidad o Fleet Engine Deliveries, obtén información sobre la facturación en la documentación de Servicios de movilidad. Para obtener más información sobre el registro de transacciones, consulta Configura la facturación, Registra transacciones facturables, Informes y Registra transacciones facturables (Android).