En esta guía, se indican los requisitos de configuración de compilación para usar la SDK de Navigation para Android. En las instrucciones, se da por sentado que tienes un IDE de Android y que estén familiarizados con el desarrollo de Android.
Requisitos mínimos para usar el SDK de Navigation
Estos requisitos se aplican a la versión 4.99 y anteriores del SDK de Navigation para Android.
Un proyecto de la consola de Google Cloud con el SDK de Navigation habilitado. Para el aprovisionamiento, comunícate con tu representante de Google Maps Platform.
Tu app debe orientarse al nivel de API 30 o uno superior.
Para ejecutar una app compilada con el SDK de Navigation, la biblioteca de el dispositivo debe tener los Servicios de Google Play esté instalado y habilitado.
Texto de atribuciones y licencias debe agregarse a la app.
Configura tus proyectos: proyecto de la consola de Cloud y proyecto de Android
Para poder compilar o probar una app, debes crear un proyecto en la consola de Cloud y agregar credenciales de clave de API. El proyecto debe tener aprovisionamiento para acceder a la SDK de Navigation. Todas las claves dentro del proyecto de la consola de Cloud tengan el mismo acceso al SDK de Navigation. Una clave puede tener más de un proyecto de desarrollo asociado. Si ya tienes un proyecto de la consola, puedes agregar una clave a tu proyecto actual.
Para configurar
- En tu navegador web favorito, accede a la Cloud Console y crea tu Consola de Cloud en un proyecto final.
- En tu IDE, como Android Studio, crea una app de desarrollo de apps para Android. proyecto y anota el nombre del paquete.
- Comunícate con tu representante de Google Maps Platform para que te otorgue acceso al SDK de Navigation para tu consola de Cloud en un proyecto final.
- En el panel de la consola de Cloud en tu navegador web, haz lo siguiente: crear credenciales para generar una clave de API con restricciones.
- En la página Clave de API, haz clic en Apps para Android en la sección Restricciones de aplicaciones. en una sola área de almacenamiento en etapa intermedia.
- Haz clic en Agregar el nombre del paquete y la huella digital y, luego, ingresa el paquete. el nombre de tu proyecto de desarrollo y la huella digital SHA-1 para esa clave.
- Haz clic en Guardar.
Agrega el SDK de Navigation a tu proyecto
El SDK de Navigation está disponible a través de Maven o como Paquete de AAR Después de crear tu proyecto de desarrollo, puedes integrar el SDK en él. Para ello, haz lo siguiente: con uno de los siguientes enfoques.
Cómo usar Maven para el SDK de Navigation v4.5 y versiones posteriores (recomendado)
A continuación, se usa el repositorio de Maven google()
, que es el más sencillo
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' }
Si actualizas desde el repositorio original de Maven, ten en cuenta que los grupos y los nombres de los artefactos cambiaron El complemento
com.google.cloud.artifactregistry.gradle-plugin
ya no está disponible necesario.Además, 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>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.
<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>
Cómo usar el SDK de Maven para Navigation antes de la versión 4.5 o con el SDK de Driver
El SDK de Navigation sigue disponible a través del
repositorio original de Maven en el resto de las versiones v4. Este es el
la misma biblioteca con las mismas actualizaciones que la versión anterior y ofrece
compatibilidad con el SDK de Driver y otras bibliotecas durante la transición. Usando
esta dependencia requiere acceder a tu proyecto de la nube a través de gcloud
cuando
durante la compilación.
- Configura tu entorno para acceder al repositorio Maven de Google como se describe en el Requisitos previos de la documentación del SDK de consumidor. Acceso a la El SDK de Navigation se controla a través de un grupo de lugares de trabajo.
Agrega la siguiente dependencia a tu configuración de Gradle o Maven y reemplaza el Es el marcador de posición
VERSION_NUMBER
para la versión deseada del SDK de Navigation.Gradle
Agrega lo siguiente a tu
build.gradle
a nivel de módulo:dependencies { ... implementation 'com.google.android.maps:navsdk:VERSION_NUMBER' }
Además, 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>com.google.android.maps</groupId> <artifactId>navsdk</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.
<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>
Usar un paquete de AAR descargado (no recomendado)
El SDK de Navigation también está disponible como un paquete de AAR. Después de crear el proyecto de desarrollo, puedes integrar el SDK. Estas instrucciones se da por sentado el uso de Android Studio para tu IDE.
Descarga la versión más reciente del SDK de Navigation de Google Drive compartido y descomprímelo. Si no tiene acceso, comunícate con tu representante.
En Android Studio, abre un proyecto y agrega el paquete de los Servicios de Google Play con SDK Manager.
Desde el directorio de archivos ZIP, copia
libs/google_navigation_navmap.aar
en el directorioapp/libs
de tu proyecto.Agrega lo siguiente a tu
build.gradle
a nivel de módulo:implementation(name: 'google_navigation_navmap', ext: 'aar')
Además, 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' } } }
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 sigue estos lineamientos para lo siguiente: actualiza la configuración para que cumpla con los requisitos del SDK de Navigation y también configurar las opciones de optimización.Configuración obligatoria para el SDK de Navigation
- Establece
minSdkVersion
en 23 o más. - Establece
targetSdkVersion
en 30 o más. - Agrega un parámetro de configuración de
dexOptions
que aumente eljavaMaxHeapSize
. - Establece la ubicación para bibliotecas adicionales.
- Agrega
repositories
ydependencies
para el SDK de Navigation. - Reemplaza los números de versión en las dependencias con las últimas versiones disponibles.
Configuración opcional para disminuir el tiempo de compilación
- Habilitar reducción de código y reducción de recursos 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, considera 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, estableceresConfigs
para los idiomas que realmente usas. De forma predeterminada, Gradle incluye cadenas de recursos para todos los idiomas compatibles con el 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 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'
apply plugin: 'com.google.cloud.artifactregistry.gradle-plugin'
ext {
androidxVersion = "1.0.0"
lifecycle_version = "1.1.1"
}
android {
compileSdkVersion 30
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "<your id>"
// Navigation SDK supports SDK 23 and later.
minSdkVersion 23
targetSdkVersion 30
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 {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
// This tells Gradle where to look to find additional libraries - in this case, the
// google_navigation_navmap.aar file.
repositories {
flatDir {
dirs 'libs'
}
google()
// Required for accessing the Navigation SDK on Google's Maven repository.
maven {
url "artifactregistry://us-west2-maven.pkg.dev/gmp-artifacts/transportation"
}
}
dependencies {
// Include the Google Navigation SDK
implementation 'com.google.android.maps:navsdk:4.4.0'
// The included AAR file under libs can be used instead of the Maven repository.
// Uncomment the line below and comment out the previous dependency to use
// the AAR file instead. Ensure that you add the AAR file to the libs directory.
// implementation(name: 'google_navigation_navmap', ext: 'aar')
// These dependencies are required for the Navigation SDK to function
// properly at runtime.
implementation 'org.chromium.net:cronet-fallback:69.3497.100'
// Optional for Cronet users:
// implementation 'org.chromium.net:cronet-api:69.3497.100'
implementation 'androidx.appcompat:appcompat:${androidxVersion}'
implementation 'androidx.cardview:cardview:${androidxVersion}'
implementation 'com.google.android.material:material:${androidxVersion}'
implementation 'androidx.mediarouter:mediarouter:${androidxVersion}'
implementation 'androidx.preference:preference:${androidxVersion}'
implementation 'androidx.recyclerview:recyclerview:${androidxVersion}'
implementation 'androidx.legacy:legacy-support-v4:${androidxVersion}'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.github.bumptech.glide:okhttp-integration:4.9.0'
implementation 'android.arch.lifecycle:common-java8:$lifecycle_version'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.android.datatransport:transport-api:2.2.0'
implementation 'com.google.android.datatransport:transport-backend-cct:2.2.0'
implementation 'com.google.android.datatransport:transport-runtime:2.2.0'
implementation 'joda-time:joda-time:2.9.9'
annotationProcessor 'androidx.annotation:annotation:1.1.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}
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}" />
Note:
com.google.android.geo.API_KEY
is the recommended metadata name for the API key. A key with this name can be used to authenticate to multiple Google Maps-based APIs on the Android platform, including the Navigation SDK for Android. For backwards compatibility, the API also supports the namecom.google.android.maps.v2.API_KEY
. This legacy name allows authentication to the Android Maps API v2 only. An application can specify only one of the API key metadata names. If both are specified, the API throws an exception. -
In Android Studio, open your module-level
build.gradle.kts
orbuild.gradle
file and edit thesecrets
property. If thesecrets
property does not exist, add it.Edit the properties of the plugin to set
propertiesFileName
tosecrets.properties
, setdefaultPropertiesFileName
tolocal.defaults.properties
, and set any other properties.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 requeridos en la Archivo ZIP del SDK de Navigation para Android:
NOTICE.txt
LICENSES.txt
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-08-22 (UTC)
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Falta la información que necesito" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Muy complicado o demasiados pasos" },{ "type": "thumb-down", "id": "outOfDate", "label":"Desactualizado" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema de traducción" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Problema con las muestras o los códigos" },{ "type": "thumb-down", "id": "otherDown", "label":"Otro" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Fácil de comprender" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Resolvió mi problema" },{ "type": "thumb-up", "id": "otherUp", "label":"Otro" }]