Configurer votre projet – Version 4.99 et antérieure

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

Configuration minimale requise pour utiliser le SDK Navigation

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

Configurer vos projets: projet Cloud Console et projet Android

Avant de pouvoir compiler ou tester une application, vous devez créer un projet dans la console Cloud et ajouter des identifiants de clé API. Le projet doit disposer du provisionnement pour accéder au SDK Navigation. Toutes les clés du projet Cloud Console disposent 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 ajouter une clé à votre projet actuel.

Configuration

  1. Dans votre navigateur Web préféré, connectez-vous à la console Cloud et créez votre projet dans la console Cloud.
  2. Dans votre IDE, tel qu'Android Studio, créez un projet de développement d'applications Android et notez le nom du package.
  3. Contactez votre représentant Google Maps Platform afin qu'il vous donne accès au SDK Navigation pour votre projet dans la console Cloud.
  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, puis saisissez le nom du package de votre projet de développement et l'empreinte SHA-1 de cette clé.
  7. Cliquez sur Enregistrer.

Ajouter le SDK Navigation à votre projet

Le SDK Navigation est disponible via Maven ou en tant que bundle AAR. Une fois que vous avez créé votre projet de développement, vous pouvez y intégrer le SDK en utilisant l'une des approches suivantes.

La commande suivante 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 souhaitée du SDK Navigation pour Android.

    Gradle

    Ajoutez le code suivant à votre fichier 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 du groupe et de l'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. 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

    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 certaines de vos dépendances utilisent le SDK Maps, vous devez les exclure dans chaque dépendance déclarée qui repose 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 (versions antérieures à la version 4.5) ou avec le SDK Driver

Le SDK Navigation reste disponible via le dépôt Maven d'origine jusqu'aux autres versions v4. Il s'agit de la même bibliothèque avec les mêmes mises à jour que la version ci-dessus, et elle est compatible avec le SDK Driver et les autres bibliothèques pendant la transition. Pour utiliser cette dépendance, vous devez vous connecter à votre projet cloud via 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 Conditions préalables de la documentation du SDK client. L'accès au SDK Navigation est contrôlé via un groupe d'espaces 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 souhaitée du SDK Navigation.

    Gradle

    Ajoutez le code suivant à votre fichier 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. 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

    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 certaines de vos dépendances utilisent le SDK Maps, vous devez les exclure dans chaque dépendance déclarée qui repose 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>
    

Le SDK Navigation est également disponible sous forme de bundle AAR. Après avoir créé le projet de développement, vous pouvez intégrer le SDK. Ces instructions supposent l'utilisation d'Android Studio pour votre IDE.

  1. Téléchargez la dernière version du SDK Navigation à partir du Drive Google partagé et décompressez-la. Si ce n'est pas le cas, contactez votre représentant.

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

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

  4. Ajoutez le code suivant à votre fichier 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. 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'
            }
        }
    }
    

Configurer la compilation

Une fois le projet créé, vous pouvez configurer les paramètres pour assurer le succès de la compilation et de l'utilisation du 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 instructions ci-dessous pour mettre à jour les paramètres afin de répondre aux exigences du SDK Navigation. Envisagez également de définir les options d'optimisation.

    Paramètres requis pour le SDK Navigation

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

    Paramètres facultatifs permettant de réduire la durée de la compilation

    • Activez la minification du code et des ressources à l'aide de R8/ProGuard pour supprimer le code et les ressources inutilisés des dépendances. Si l'exécution de l'étape R8/ProGuard prend trop de temps, envisagez d'activer multidex pour le développement.
    • Réduisez le nombre de langues traduites dans la compilation: définissez resConfigs pour une langue pendant le développement. Pour la compilation finale, définissez resConfigs pour les langages 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 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 sur 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. 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'
}

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 dans votre projet Google Maps :

  1. Dans Android Studio, ouvrez votre fichier build.gradle ou build.gradle.kts de premier niveau 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 le fichier build.gradle au niveau du module et ajoutez le code suivant à l'élément plugins.

    Groovy

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }

    Kotlin

    plugins {
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
  3. Dans le fichier build.gradle au niveau du module, assurez-vous que targetSdk et compileSdk sont définis sur 34.
  4. Enregistrez le fichier et synchronisez votre projet avec Gradle.
  5. Ouvrez le fichier secrets.properties dans votre répertoire de premier niveau et ajoutez le code suivant. Remplacez YOUR_API_KEY par votre clé API. Stockez votre clé dans ce fichier, car secrets.properties n'est pas vérifié dans un système de contrôle des versions.
    MAPS_API_KEY=YOUR_API_KEY
  6. Enregistrez le fichier.
  7. Créez le fichier local.defaults.properties dans votre répertoire de premier niveau (même dossier que le fichier secrets.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.properties est 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 omet secrets.properties et que vous n'avez pas encore créé de fichier secrets.properties localement pour fournir votre clé API.

  8. Enregistrez le fichier.
  9. Dans votre fichier AndroidManifest.xml, accédez à com.google.android.geo.API_KEY, puis modifiez le android:value attribute. Si le tag <meta-data> n'existe pas, créez-le comme enfant du tag <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 name com.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.

  10. In Android Studio, open your module-level build.gradle or build.gradle.kts file and edit the secrets property. If the secrets property does not exist, add it.

    Edit the properties of the plugin to set propertiesFileName to secrets.properties, set defaultPropertiesFileName to local.defaults.properties, and set any other properties.

    Groovy

    secrets {
        // Optionally specify a different file name containing your secrets.
        // The plugin defaults to "local.properties"
        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.*"
    }
            

    Kotlin

    secrets {
        // Optionally specify a different file name containing your secrets.
        // The plugin defaults to "local.properties"
        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.*"
    }
            

Inclure les attributions requises dans votre application

Si vous utilisez le SDK Navigation pour Android dans votre application, vous devez inclure un texte d'attribution et des 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.txt
  • LICENSES.txt