Cette page explique comment intégrer le SDK Navigation à votre projet de développement.
Ajouter le SDK Navigation à votre projet
Le SDK Navigation est disponible via le dépôt Maven de Google.
Vous pouvez ajouter le SDK à votre projet à l'aide de votre configuration Gradle build.gradle ou Maven pom.xml.
Ajoutez la dépendance suivante à votre configuration Gradle ou Maven, en remplaçant l'espace réservé
VERSION_NUMBERpar la version souhaitée du SDK Navigation pour Android.Gradle
Ajoutez le code suivant au fichier
build.gradleau niveau du module :dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }Maven
Ajoutez le code suivant à votre
pom.xml:<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>Si vous avez des dépendances qui utilisent le SDK Maps, vous devez exclure la dépendance dans chaque dépendance déclarée qui repose sur le SDK Maps.
Gradle
Ajoutez le code suivant à votre fichier
build.gradlede premier niveau :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
Ajoutez le code suivant à votre
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>
Configurer la compilation
Une fois le projet créé, vous pouvez configurer les paramètres pour réussir la compilation et l'utilisation du SDK Navigation.
Mettre à jour les propriétés locales
- Dans le dossier Gradle Scripts, ouvrez le fichier
local.propertieset ajoutezandroid.useDeprecatedNdk=true.
Mettre à jour le script de compilation Gradle
Ouvrez le fichier
build.gradle (Module:app)et suivez les consignes ci-dessous pour mettre à jour les paramètres afin de répondre aux exigences du SDK Navigation. Vous pouvez également définir les options d'optimisation.Paramètres requis pour le SDK Navigation
- Définissez
minSdkVersionsur 24 ou plus. - Définissez
targetSdkVersionsur 36 ou plus. - Ajoutez un paramètre
dexOptionsqui augmente la valeur dejavaMaxHeapSize. - Définissez l'emplacement des bibliothèques supplémentaires.
- Ajoutez les éléments
repositoriesetdependenciespour le SDK Navigation. - Remplacez les numéros de version des dépendances par les dernières versions disponibles.
Paramètres facultatifs pour réduire le temps de compilation
- Activez la minification de code et la réduction des ressources à l'aide de R8/ProGuard pour supprimer le code et les ressources inutilisés des dépendances. Si l'étape R8/ProGuard prend trop de temps, envisagez d'activer multidex pour le travail de développement.
- Réduisez le nombre de traductions incluses dans la compilation : définissez
resConfigspour une langue pendant le développement. Pour la compilation finale, définissezresConfigspour les langues que vous utilisez réellement. Par défaut, Gradle inclut des chaînes de ressources pour toutes les langues compatibles avec le SDK Navigation.
Ajouter le désucrage pour la compatibilité avec Java 8
- Si vous compilez votre application à l'aide du plug-in Android Gradle 4.0.0 ou version ultérieure, vous pouvez utiliser un certain nombre d'API en langage Java 8. Pour en savoir plus, consultez Compatibilité avec la désucration de Java 8. Consultez l'exemple d'extrait de script de compilation ci-dessous pour découvrir les options de compilation et de dépendance.
- Utilisez les versions de Gradle, du plug-in Android Gradle (AGP) et de la bibliothèque Desugar qui correspondent à votre version du SDK Navigation. Consultez le tableau ci-dessous pour en savoir plus.
- La bibliothèque Desugar doit être activée pour le module
appet tout module qui dépend directement du SDK Navigation.
- Définissez
Le tableau suivant liste les versions de Gradle, d'AGP et de la bibliothèque Desugar requises pour chaque version du SDK Navigation.
| Version du SDK Navigation | Version de Gradle | Version de l'AGP | Bibliothèque de désucrage |
|---|---|---|---|
| 8.0.0 et versions ultérieures | 9.1.0 | 9.0.1 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.7.0 à 7.9.0 | 8.13 | 8.13.2 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.3.0 à 7.6.0 | 8.11.1 | 8.10.0 | com.android.tools:desugar_jdk_libs_nio:2.0.3 |
Vous trouverez ci-dessous un exemple de script de compilation Gradle pour l'application. Consultez les applications exemples pour obtenir des ensembles de dépendances mis à jour, car la version du SDK Navigation que vous utilisez peut être légèrement en avance ou en retard par rapport à cette documentation.
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.1.5'
}
Ajouter la clé API à votre application
Cette section explique comment stocker votre clé API pour qu'elle puisse être référencée de manière sécurisée par votre application. Vous ne devez pas enregistrer votre clé API dans votre système de contrôle des versions. Nous vous recommandons donc de la stocker dans un fichier secrets.properties situé dans le répertoire racine de votre projet et d'exclure ce fichier du contrôle des versions. Pour en savoir plus sur les fichiers de propriétés Gradle, consultez Fichiers de propriétés Gradle.
Pour vous faciliter la tâche, nous vous recommandons d'utiliser le plug-in Secrets Gradle pour Android.
Pour installer le plug-in Secrets Gradle pour Android et stocker votre clé API :
-
Dans Android Studio, ouvrez votre fichier
build.gradle.ktsoubuild.gradlede premier niveau et ajoutez le code suivant au blocplugins.Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false }
Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false }
-
Ouvrez le fichier
build.gradle.ktsoubuild.gradleau niveau du module et ajoutez le code suivant à l'élémentplugins.Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- Si vous utilisez Android Studio, synchronisez votre projet avec Gradle.
-
Ouvrez le fichier
secrets.propertiesdans votre répertoire de premier niveau et ajoutez le code suivant. RemplacezYOUR_API_KEYpar votre clé API. Veillez à ajoutersecrets.propertiesà votre fichier.gitignore(ou à l'exclure de votre système de contrôle des versions) afin de ne pas enregistrer votre clé API dans le contrôle des versions.MAPS_API_KEY=YOUR_API_KEY
-
Créez le fichier
local.defaults.propertiesdans votre répertoire de premier niveau (même dossier que le fichiersecrets.properties), puis ajoutez le code suivant.MAPS_API_KEY=DEFAULT_API_KEY
Ce fichier a pour but de fournir un emplacement de sauvegarde de la clé API, à utiliser si le fichier
secrets.propertiesest introuvable pour éviter l'échec des créations. Cette situation peut se produire si vous clonez l'application à partir d'un système de contrôle des versions qui ometsecrets.propertieset que vous n'avez pas encore créé de fichiersecrets.propertieslocalement pour fournir votre clé API. -
Vous pouvez ajouter la clé API à votre fichier
AndroidManifest.xmlou la fournir de manière programmatique.- Ajoutez votre clé API à
AndroidManifest.xml:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />Remarque :
com.google.android.geo.API_KEYest le nom de métadonnées recommandé pour la clé API. Une clé portant ce nom peut être utilisée pour l'authentification auprès de diverses API basées sur Google Maps et s'exécutant sur la plate-forme Android, y compris le SDK Navigation pour Android. Pour assurer la rétrocompatibilité, l'API accepte également le nomcom.google.android.maps.v2.API_KEY. Cet ancien nom autorise l'authentification auprès de l'API Google Maps Android v2 uniquement. Une application ne peut spécifier qu'un seul des noms de métadonnées de clé API. Si les deux noms sont spécifiés, l'API génère une exception. - Fournissez la clé API de manière programmatique :
Le plug-in Secrets Gradle rend la clé disponible dans la classe
BuildConfig. Lors de l'initialisation de votre application (par exemple, dans votre méthodeApplication.onCreate()), appelez la méthode comme suit :Kotlin
- Ajoutez les instructions d'importation suivantes :
import com.google.android.libraries.navigation.NavigationApi
- Ajoutez ce qui suit à votre méthode
Application.onCreate():NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
Java
- Ajoutez les instructions d'importation suivantes :
import com.google.android.libraries.navigation.NavigationApi;
- Ajoutez ce qui suit à votre méthode
Application.onCreate():NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
Remarque : Lorsque vous utilisezsetApiKey(), tenez compte des points suivants :- Fournissez une clé API non nulle et non vide.
- N'appelez
setApiKey()qu'une seule fois pendant la durée de vie de votre application. La méthode renvoieIllegalStateExceptionsi elle est appelée plusieurs fois. - Appelez
setApiKey()avant d'initialiser d'autres composants du SDK Navigation, tels queNavigator. - La clé que vous fournissez avec cette méthode remplace toute clé API de votre
AndroidManifest.xml. - Utilisez le SDK Navigation version 7.6 ou ultérieure.
- Ajoutez les instructions d'importation suivantes :
- Ajoutez votre clé API à
-
Dans Android Studio, ouvrez votre fichier
build.gradle.ktsoubuild.gradleau niveau du module et modifiez la propriétésecrets. Si la propriétésecretsn'existe pas, ajoutez-la.Modifiez les propriétés du plug-in pour définir
propertiesFileNamesur"secrets.properties",defaultPropertiesFileNamesur"local.defaults.properties"et toutes les autres propriétés.Kotlin
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root 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" }
Groovy
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root 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" }
Inclure les attributions requises dans votre application
Si vous utilisez le SDK Navigation pour Android dans votre application, vous devez inclure le texte d'attribution et les licences Open Source dans la section des mentions légales de votre application.
Vous trouverez le texte d'attribution et les licences Open Source requis dans le fichier ZIP du SDK Navigation pour Android :
NOTICE.txtLICENSES.txt
Si vous êtes un client Mobility ou Fleet Engine Deliveries
Si vous êtes un client Mobility ou Fleet Engine Deliveries, consultez la documentation Mobility pour en savoir plus sur la facturation. Pour en savoir plus sur l'enregistrement des transactions, consultez Configurer la facturation, Enregistrer les transactions facturables, Reporting et Enregistrer les transactions facturables (Android).
Dépendances manuelles (non-Gradle/Maven)
Si votre système de compilation ne résout pas les dépendances transitives (comme Bazel) ou si vous intégrez l'AAR manuellement, vous devez ajouter ces dépendances à votre projet. Gradle et Maven les résolvent automatiquement.
androidx.datastore:datastore-coreandroidx.datastore:datastore-guavacom.google.guava:listenablefutureandroidx.concurrent:concurrent-futures