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

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

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

Navigation SDK доступен через Google Maven Repository . Вы можете добавить 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'
    }
    

    Знаток

    Добавьте следующее в ваш 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'
                }
            }
    }
    

    Знаток

    Добавьте следующее в ваш 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 properties files .

Чтобы упростить эту задачу, мы рекомендуем вам использовать плагин 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 Maps на платформе 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) .