Настройте свой проект — версия 4.99 и более ранние.

В этом руководстве перечислены требования к конфигурации сборки для использования Navigation SDK для Android. Инструкции предполагают, что у вас установлена ​​среда разработки Android IDE и вы знакомы с разработкой под Android.

Минимальные требования для использования Navigation SDK

Эти требования относятся к Navigation SDK для Android версии 4.99 и более ранних.

  • Консоль Google Cloud

    Проект с включенным Navigation SDK. Для настройки обратитесь к представителю платформы Google Maps.

  • Ваше приложение должно быть ориентировано на API уровня 30 или выше.

  • Для запуска приложения, созданного с использованием Navigation SDK, на устройстве Android должны быть установлены и включены сервисы Google Play .

  • В приложение необходимо добавить информацию об авторских правах и текст лицензии .

Настройте свои проекты: проект облачной консоли и проект Android.

Прежде чем создавать или тестировать приложение, необходимо создать проект в консоли Cloud и добавить учетные данные API-ключа. Проект должен иметь возможность доступа к SDK навигации. Всем ключам в проекте консоли Cloud предоставляется одинаковый доступ к SDK навигации. С одним ключом может быть связано несколько проектов разработки. Если у вас уже есть проект консоли, вы можете добавить ключ в свой текущий проект.

Для настройки

  1. В вашем любимом веб-браузере войдите в консоль Cloud и создайте свой проект в консоли Cloud .
  2. В вашей интегрированной среде разработки , например, Android Studio, создайте проект разработки Android-приложения и запишите имя пакета.
  3. Обратитесь к представителю платформы Google Maps, чтобы предоставить доступ к SDK навигации для вашего проекта в облачной консоли.
  4. Находясь в панели управления Cloud Console в веб-браузере, создайте учетные данные для генерации ключа API с ограничениями.
  5. На странице с ключом API в разделе «Ограничения приложений» нажмите «Приложения Android».
  6. Нажмите «Добавить имя пакета и отпечаток» , затем введите имя пакета вашего проекта разработки и отпечаток SHA-1 для этого ключа.
  7. Нажмите « Сохранить ».

Добавьте SDK навигации в свой проект.

SDK для навигации доступен через Maven или в виде AAR-пакета . После создания проекта разработки вы можете интегрировать в него SDK, используя один из следующих способов.

Для навигации используйте Maven SDK версии 4.5 и выше (рекомендуется).

В приведенном ниже примере используется репозиторий Maven google() , что является самым простым и рекомендуемым способом добавления Navigation SDK в ваш проект.

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

    Грэдл

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

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

    При обновлении с исходного репозитория Maven обратите внимание, что названия групп и артефактов изменились, и плагин com.google.cloud.artifactregistry.gradle-plugin больше не требуется.

    И добавьте следующее в ваш главный файл build.gradle :

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

    Мэйвен

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

    <dependencies>
    ...
    <dependency>
         <groupId>com.google.android.libraries.navigation</groupId>
         <artifactId>navigation</artifactId>
         <version>VERSION_NUMBER</version>
    </dependency>
    </dependencies>
    

    Если у вас есть зависимости, использующие Maps SDK, вам необходимо исключить эту зависимость из каждого объявленного зависимого объекта, который полагается на Maps SDK.

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

Используйте Maven для Navigation SDK версий до 4.5 или с Driver SDK.

SDK навигации по-прежнему доступен через оригинальный репозиторий Maven во всех версиях v4. Это та же библиотека со всеми теми же обновлениями, что и в предыдущей версии, и она обеспечивает совместимость с SDK драйверов и другими библиотеками во время перехода. Для использования этой зависимости необходимо войти в свой облачный проект с помощью gcloud при компиляции.

  1. Настройте свою среду для доступа к репозиторию Maven от Google, как описано в разделе «Предварительные требования» документации по Consumer SDK. Доступ к Navigation SDK контролируется через группу рабочих областей.
  2. Добавьте следующую зависимость в конфигурацию Gradle или Maven, заменив заполнитель VERSION_NUMBER на версию Navigation SDK.

    Грэдл

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

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

    И добавьте следующее в ваш главный файл 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>com.google.android.maps</groupId>
         <artifactId>navsdk</artifactId>
         <version>VERSION_NUMBER</version>
    </dependency>
    </dependencies>
    

    Если у вас есть зависимости, использующие Maps SDK, вам необходимо исключить эту зависимость из каждого объявленного зависимого объекта, который полагается на Maps SDK.

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

Использовать загруженный пакет AAR (не рекомендуется)

SDK для навигации также доступен в виде AAR-пакета . После создания проекта разработки вы можете интегрировать SDK. В этих инструкциях предполагается использование Android Studio в качестве IDE.

  1. Загрузите последнюю версию Navigation SDK с общего Google Диска и распакуйте её. Если у вас нет доступа, свяжитесь со своим представителем.

  2. В Android Studio откройте проект и добавьте пакет сервисов Google Play с помощью менеджера SDK .

  3. Скопируйте libs/google_navigation_navmap.aar из папки с zip-архивом в папку app/libs вашего проекта.

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

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

    И добавьте следующее в ваш главный файл 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'
           }
       }
    }
    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы установить плагин Secrets Gradle для Android и сохранить свой API-ключ:

  1. В Android Studio откройте корневой файл 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 вашего приложения и добавьте следующий код в элемент plugins .

    Классный

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

    Котлин

    plugins {
        id("com.android.application")
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
  3. Если вы используете Android Studio, синхронизируйте свой проект с Gradle .
  4. Откройте файл local.properties в директории вашего проекта и добавьте следующий код. Замените YOUR_API_KEY на ваш API-ключ.
    MAPS_API_KEY=YOUR_API_KEY
  5. В файле AndroidManifest.xml перейдите к com.google.android.geo.API_KEY и обновите атрибут android:value следующим образом:
    <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 выдаст исключение.

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

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

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

  • NOTICE.txt
  • LICENSES.txt