Configurer votre projet – Version 4.99 et antérieure

Ce guide répertorie les exigences de configuration de compilation pour l'utilisation du SDK Navigation pour Android. Les instructions supposent que vous avez installé un IDE Android et que vous connaissez le développement Android.

Exigences minimales pour l'utilisation du SDK Navigation

Ces exigences s'appliquent au SDK Navigation pour Android version 4.99 et antérieure.

Configurer vos projets : projet Cloud Console et projet Android

Avant de pouvoir créer ou tester une application, vous devez créer un projet Cloud Console et ajouter des identifiants de clé API. Le projet doit être provisionné pour accéder au SDK Navigation. Toutes les clés du projet Cloud Console bénéficient du même accès au SDK Navigation. Une clé peut être associée à plusieurs projets de développement. Si vous disposez déjà d'un projet de console, vous pouvez y ajouter une clé.

Pour configurer

  1. Dans votre navigateur Web préféré, connectez-vous à la console Cloud et créez votre projet Cloud Console.
  2. Dans votre IDE, tel qu'Android Studio, créez un projet de développement d'application Android et notez le nom du package.
  3. Contactez votre représentant Google Maps Platform pour fournir un accès au SDK Navigation pour votre projet Cloud Console.
  4. Dans le tableau de bord Cloud Console de votre navigateur Web, créez des identifiants pour générer une clé API avec des restrictions.
  5. Sur la page Clé API, cliquez sur Applications Android dans la zone Restrictions relatives aux applications.
  6. Cliquez sur Ajouter le nom du package et l'empreinte numérique, puis saisissez le nom du package de votre projet de développement et l'empreinte numérique SHA-1 de cette clé.
  7. Cliquez sur Enregistrer.

Ajouter le SDK Navigation à votre projet

Le SDK Navigation est disponible via Maven ou sous forme de bundle AAR. Une fois votre projet de développement créé, vous pouvez y intégrer le SDK à l'aide de l'une des approches suivantes.

Utiliser Maven pour le SDK Navigation version 4.5 et ultérieure (recommandé)

L'exemple suivant utilise le dépôt Maven google(), qui est le moyen le plus simple et recommandé d'ajouter le SDK Navigation à votre projet.

  1. Ajoutez la dépendance suivante à votre configuration Gradle ou Maven, en remplaçant l'espace réservé VERSION_NUMBER par la version du SDK Navigation pour Android.

    Gradle

    Ajoutez les éléments suivants à votre build.gradle au niveau du module :

    dependencies {
    ...
    implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER'
    }
    

    Si vous effectuez une mise à niveau à partir du dépôt Maven d'origine, notez que les noms de groupe et d'artefact ont changé, et que le plug-in com.google.cloud.artifactregistry.gradle-plugin n'est plus nécessaire.

    Ajoutez ensuite le code suivant à votre build.gradle de premier niveau :

    allprojects {
    ...
    // Required: you must exclude the Google Play service Maps SDK from
    // your transitive dependencies to make nsure 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 les éléments suivants à 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 s'appuie sur le SDK 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>
    

Utiliser Maven pour le SDK Navigation antérieur à la version 4.5 ou avec le SDK Driver

Le SDK Navigation reste disponible à l'aide du dépôt Maven d'origine pour le reste des versions 4. Il s'agit de la même bibliothèque avec toutes les mêmes mises à jour que la version ci-dessus, et elle assure la compatibilité avec le SDK Driver et d'autres bibliothèques pendant la transition. L'utilisation de cette dépendance nécessite de vous connecter à votre projet cloud à l'aide de gcloud lors de la compilation.

  1. Configurez votre environnement pour accéder au dépôt Maven de Google, comme décrit dans la section Prérequis de la documentation du SDK Consumer. L'accès au SDK Navigation est contrôlé par un groupe d'espace de travail.
  2. Ajoutez la dépendance suivante à votre configuration Gradle ou Maven, en remplaçant l'espace réservé VERSION_NUMBER par la version du SDK Navigation.

    Gradle

    Ajoutez les éléments suivants à votre build.gradle au niveau du module :

    dependencies {
    ...
    implementation 'com.google.android.maps:navsdk:VERSION_NUMBER'
    }
    

    Ajoutez ensuite le code suivant à votre build.gradle de 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 les éléments suivants à votre pom.xml :

    <dependencies>
    ...
    <dependency>
         <groupId>com.google.android.maps</groupId>
         <artifactId>navsdk</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 s'appuie sur le SDK 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>
    

Utiliser un bundle AAR téléchargé (non recommandé)

Le SDK Navigation est également disponible sous forme de bundle AAR. Une fois le projet de développement créé, vous pouvez intégrer le SDK. Ces instructions supposent que vous utilisez Android Studio pour votre IDE.

  1. Téléchargez la dernière version du SDK Navigation à partir du Google Drive partagé et extrayez-la. Si vous n'y avez pas accès, contactez votre représentant.

  2. Dans Android Studio, ouvrez un projet et ajoutez le package Services Google Play à l'aide du SDK Manager.

  3. À partir du répertoire du fichier ZIP, copiez libs/google_navigation_navmap.aar dans le répertoire app/libs de votre projet.

  4. Ajoutez les éléments suivants à votre build.gradle au niveau du module :

    implementation(name: 'google_navigation_navmap', ext: 'aar')
    

    Ajoutez ensuite le code suivant à votre build.gradle de 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'
           }
       }
    }
    

Configurer la compilation

Une fois le projet créé, vous pouvez configurer les paramètres pour une compilation réussie et utiliser le SDK Navigation.

Mettre à jour les propriétés locales

  • Dans le dossier Scripts Gradle, ouvrez le fichier local.properties et ajoutez android.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 envisager de définir les options d'optimisation.

    Paramètres requis pour le SDK Navigation

    1. Définissez minSdkVersion sur 23 ou une version ultérieure.
    2. Définissez targetSdkVersion sur 30 ou une version ultérieure.
    3. Ajoutez un paramètre dexOptions qui augmente la javaMaxHeapSize.
    4. Définissez l'emplacement des bibliothèques supplémentaires.
    5. Ajoutez les repositories et les dependencies pour le SDK Navigation.
    6. Remplacez les numéros de version dans les dépendances par les dernières versions disponibles.

    Paramètres facultatifs pour réduire le temps de compilation

    • Activez la minification du code et la minification 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 linguistiques incluses dans la compilation : définissez resConfigs pour une seule langue lors du développement. Pour la compilation finale, définissez resConfigs pour 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.

Vous trouverez ci-dessous un exemple de script de compilation Gradle pour l'application. Consultez les exemples d'applications 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'
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. Make sure 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'
}

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 le fichier secrets.properties, qui se trouve dans le répertoire racine de votre projet. Pour en savoir plus sur le fichier secrets.properties, 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 :

  1. Dans Android Studio, ouvrez votre fichier build.gradle au niveau racine et ajoutez le code suivant à l'élément dependencies sous buildscript.

    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")
        }
    }
  2. Ouvrez votre fichier build.gradle au niveau de l'application et ajoutez le code suivant à l'élément plugins.

    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")
    }
  3. Si vous utilisez Android Studio, synchronisez votre projet avec Gradle.
  4. Ouvrez local.properties dans votre répertoire au niveau du projet, puis ajoutez le code suivant. Remplacez YOUR_API_KEY par votre clé API.
    MAPS_API_KEY=YOUR_API_KEY
  5. Vous pouvez ajouter la clé API à votre fichier AndroidManifest.xml ou la fournir par programmation.
    • 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_KEY est 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 prend en charge également le nom com.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 par programmation :

      Le plug-in Secrets Gradle met la clé à disposition dans la classe BuildConfig. Lors de l'initialisation de votre application (par exemple, dans votre méthode Application.onCreate()), appelez la méthode comme suit :

      Kotlin

      1. Ajoutez les instructions d'importation suivantes :
        import com.google.android.libraries.navigation.NavigationApi
      2. Ajoutez les éléments suivants à votre méthode Application.onCreate() :
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)

      Java

      1. Ajoutez les instructions d'importation suivantes :
        import com.google.android.libraries.navigation.NavigationApi;
      2. Ajoutez les éléments suivants à votre méthode Application.onCreate() :
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
      Remarque : Lorsque vous utilisez setApiKey(), gardez les points suivants à l'esprit :
      • 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 génère une IllegalStateException si elle est appelée plus d'une fois.
      • Appelez setApiKey() avant d'initialiser d'autres composants du SDK Navigation, tels que Navigator.
      • La clé que vous fournissez avec cette méthode remplace toute clé API dans votre AndroidManifest.xml.
      • Utilisez le SDK Navigation version 7.6 ou ultérieure.

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 requis et les licences Open Source dans le fichier ZIP du SDK Navigation pour Android :

  • NOTICE.txt
  • LICENSES.txt