Настройте свой проект Android Studio

На этой странице объясняется, как интегрировать Navigation SDK в ваш проект разработки.

Добавьте Navigation SDK в свой проект

Navigation SDK доступен в репозитории Google Maven . Вы можете добавить SDK в свой проект, используя конфигурацию Gradle build.gradle или Maven pom.xml .

  1. Добавьте следующую зависимость в конфигурацию Gradle или Maven, заменив заполнитель VERSION_NUMBER на нужную версию Navigation SDK для Android.

    Грейдл

    Добавьте следующее в build.gradle на уровне модуля:

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

    Maven

    Добавьте в pom.xml следующее:

    <dependencies>
      ...
      <dependency>
        <groupId>com.google.android.libraries.navigation</groupId>
        <artifactId>navigation</artifactId>
        <version>VERSION_NUMBER</version>
      </dependency>
    </dependencies>
    
  2. Если у вас есть какие-либо зависимости, использующие Maps SDK, вам необходимо исключить зависимость из каждой объявленной зависимости, которая опирается на Maps SDK.

    Грейдл

    Добавьте следующее в ваш build.gradle верхнего уровня:

    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

    Добавьте в 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>
    

Настройте сборку

После создания проекта вы можете настроить параметры для успешной сборки и использования Navigation SDK.

Обновить локальные свойства

  • В папке Gradle Scripts откройте файл local.properties и добавьте android.useDeprecatedNdk=true .

Обновите скрипт сборки Gradle

  • Откройте файл build.gradle (Module:app) и следуйте следующим рекомендациям, чтобы обновить настройки в соответствии с требованиями Navigation SDK, а также рассмотрите возможность настройки параметров оптимизации.

    Необходимые настройки для Navigation SDK

    1. Установите minSdkVersion на 23 или выше.
    2. Установите targetSdkVersion на 34 или выше.
    3. Добавьте параметр dexOptions , который увеличивает javaMaxHeapSize .
    4. Укажите местоположение дополнительных библиотек.
    5. Добавьте repositories и dependencies для Navigation SDK.
    6. Замените номера версий в зависимостях на последние доступные версии.

    Дополнительные настройки для сокращения времени сборки

    • Включите сжатие кода и ресурсов с помощью R8/ProGuard, чтобы удалить неиспользуемый код и ресурсы из зависимостей. Если этап R8/ProGuard занимает слишком много времени, рассмотрите возможность включения multidex для разработки.
    • Сократите количество языковых переводов, включаемых в сборку: настройте resConfigs для одного языка во время разработки. Для финальной сборки настройте resConfigs для языков, которые вы фактически используете. По умолчанию Gradle включает строки ресурсов для всех языков, поддерживаемых Navigation SDK.

    Добавить дешугаринг для поддержки Java8

    • Если вы разрабатываете приложение с помощью плагина Android Gradle версии 4.0.0 или выше, он расширяет поддержку ряда API Java 8. Подробнее см. в разделе «Поддержка десахаринга в Java 8» . Пример скрипта сборки ниже содержит информацию о параметрах компиляции и зависимостей.
    • Мы рекомендуем использовать Gradle 8.4, плагин Android Gradle версии 8.3.0 и библиотеку Desugar com.android.tools:desugar_jdk_libs_nio:2.0.3 . Эта конфигурация совместима с Navigation SDK для Android версии 6.0.0 и выше.
    • Библиотеку Desugar необходимо включить для модуля app и любого модуля, который напрямую зависит от Navigation SDK.

Ниже представлен пример скрипта сборки Gradle для приложения. Проверьте примеры приложений на наличие обновлённых наборов зависимостей, так как используемая вами версия Navigation SDK может немного опережать или отставать от данной документации.

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'
}

Добавьте ключ API в свое приложение

В этом разделе описывается, как сохранить ключ API, чтобы приложение могло безопасно ссылаться на него. Не следует регистрировать ключ API в системе контроля версий, поэтому мы рекомендуем хранить его в файле secrets.properties , расположенном в корневом каталоге вашего проекта. Подробнее о файле secrets.properties см. в разделе Файлы свойств Gradle .

Чтобы упростить эту задачу, мы рекомендуем вам использовать плагин Secrets Gradle для Android .

Чтобы установить плагин Secrets Gradle для Android в вашем проекте Google Maps:

  1. В Android Studio откройте файл build.gradle.kts или build.gradle верхнего уровня и добавьте следующий код в элемент dependencies под buildscript .

    Котлин

    buildscript {
        dependencies {
            classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
        }
    }

    Круто

    buildscript {
        dependencies {
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }
  2. Откройте файл build.gradle.kts или build.gradle на уровне модуля и добавьте следующий код в элемент plugins .

    Котлин

    plugins {
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }

    Круто

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
  3. В файле build.gradle.kts или build.gradle на уровне модуля убедитесь, что для targetSdk и compileSdk задано значение 34.
  4. Синхронизируйте свой проект с Gradle .
  5. Откройте файл secrets.properties в каталоге верхнего уровня и добавьте следующий код. Замените YOUR_API_KEY вашим ключом API. Сохраните свой ключ в этом файле, поскольку secrets.properties не подлежит проверке в системе контроля версий.
    MAPS_API_KEY=YOUR_API_KEY
  6. Создайте файл local.defaults.properties в каталоге верхнего уровня, в той же папке, что и файл secrets.properties , а затем добавьте следующий код.

    MAPS_API_KEY=DEFAULT_API_KEY

    Этот файл предназначен для резервного хранения ключа API на случай, если файл secrets.properties не будет найден, чтобы предотвратить сбои сборок. Это может произойти, если вы клонируете приложение из системы контроля версий, в которой отсутствует файл secrets.properties , и вы ещё не создали файл secrets.properties локально для хранения ключа API.

  7. В файле AndroidManifest.xml перейдите к com.google.android.geo.API_KEY и обновите android:value attribute . Если тег <meta-data> отсутствует, создайте его как дочерний элемент тега <application> .
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />

    Примечание: com.google.android.geo.API_KEY — рекомендуемое имя метаданных для ключа API. Ключ с таким именем можно использовать для аутентификации в нескольких API Google Карт на платформе Android, включая Navigation SDK для Android. Для обратной совместимости API также поддерживает имя com.google.android.maps.v2.API_KEY . Это устаревшее имя позволяет выполнять аутентификацию только в Android Maps API v2. Приложение может указать только одно из имён метаданных ключа API. Если указаны оба, API выдаёт исключение.

  8. В Android Studio откройте файл build.gradle.kts или build.gradle на уровне модуля и отредактируйте свойство secrets . Если свойство secrets отсутствует, добавьте его.

    Отредактируйте свойства плагина, чтобы задать для propertiesFileName значение secrets.properties , для defaultPropertiesFileName — значение local.defaults.properties , а также задать любые другие свойства.

    Котлин

    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"
    }
            

    Круто

    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"
    }
            

Включите необходимые атрибуции в свое приложение

Если вы используете Navigation SDK для Android в своем приложении, вы должны включить текст атрибуции и лицензии с открытым исходным кодом в раздел юридических уведомлений вашего приложения.

Необходимый текст атрибуции и лицензии с открытым исходным кодом можно найти в zip-файле Navigation SDK для Android:

  • NOTICE.txt
  • LICENSES.txt

Если вы являетесь клиентом Mobility или Fleet Engine Deliveries

Если вы являетесь клиентом Mobility или Fleet Engine Deliveries, ознакомьтесь с информацией о выставлении счетов в документации Mobility. Подробнее о регистрации транзакций см. в разделах Настройка выставления счетов , Регистрация счетов за транзакции , Отчетность и Регистрация счетов за транзакции (Android) .