На этой странице объясняется, как интегрировать Navigation SDK в ваш проект разработки.
Добавьте Navigation SDK в свой проект
Navigation SDK доступен через Google Maven Repository . Вы можете добавить SDK в свой проект, используя конфигурацию Gradle build.gradle
или Maven pom.xml
.
Добавьте следующую зависимость в конфигурацию 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>
Если у вас есть какие-либо зависимости, использующие 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
- Установите
minSdkVersion
на 23 или выше. - Установите
targetSdkVersion
на 34 или выше. - Добавьте параметр
dexOptions
, который увеличиваетjavaMaxHeapSize
. - Укажите местоположение дополнительных библиотек.
- Добавьте
repositories
иdependencies
для Navigation SDK. - Замените номера версий в зависимостях на последние доступные версии.
Дополнительные настройки для сокращения времени сборки
- Включите сокращение кода и ресурсов с помощью 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:
- В 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" } }
- Откройте файл
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' }
- В файле
build.gradle.kts
илиbuild.gradle
на уровне модуля убедитесь, чтоtargetSdk
иcompileSdk
имеют значение 34. - Синхронизируйте свой проект с Gradle .
- Откройте файл
secrets.properties
в каталоге верхнего уровня, а затем добавьте следующий код. ЗаменитеYOUR_API_KEY
на ваш ключ API. Сохраните ваш ключ в этом файле, посколькуsecrets.properties
исключен из проверки в системе контроля версий.MAPS_API_KEY=YOUR_API_KEY
Создайте файл
local.defaults.properties
в каталоге верхнего уровня, в той же папке, что и файлsecrets.properties
, а затем добавьте следующий код.MAPS_API_KEY=DEFAULT_API_KEY
Цель этого файла — предоставить резервное местоположение для ключа API, если файл
secrets.properties
не найден, чтобы сборки не давали сбой. Это может произойти, если вы клонируете приложение из системы контроля версий, которая пропускаетsecrets.properties
, и вы еще не создали файлsecrets.properties
локально, чтобы предоставить свой ключ API.- В файле
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 выдает исключение. В 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) .