В этом руководстве перечислены требования к конфигурации сборки для использования Navigation SDK для Android. Инструкции предполагают, что у вас установлена среда разработки Android IDE и вы знакомы с разработкой под Android.
Минимальные требования для использования Navigation SDK
Эти требования относятся к Navigation SDK для Android версии 4.99 и более ранних.
Проект с включенным Navigation SDK. Для настройки обратитесь к представителю платформы Google Maps.
Ваше приложение должно быть ориентировано на API уровня 30 или выше.
Для запуска приложения, созданного с использованием Navigation SDK, на устройстве Android должны быть установлены и включены сервисы Google Play .
В приложение необходимо добавить информацию об авторских правах и текст лицензии .
Настройте свои проекты: проект облачной консоли и проект Android.
Прежде чем создавать или тестировать приложение, необходимо создать проект в консоли Cloud и добавить учетные данные API-ключа. Проект должен иметь возможность доступа к SDK навигации. Всем ключам в проекте консоли Cloud предоставляется одинаковый доступ к SDK навигации. С одним ключом может быть связано несколько проектов разработки. Если у вас уже есть проект консоли, вы можете добавить ключ в свой текущий проект.
Для настройки
- В вашем любимом веб-браузере войдите в консоль Cloud и создайте свой проект в консоли Cloud .
- В вашей интегрированной среде разработки , например, Android Studio, создайте проект разработки Android-приложения и запишите имя пакета.
- Обратитесь к представителю платформы Google Maps, чтобы предоставить доступ к SDK навигации для вашего проекта в облачной консоли.
- Находясь в панели управления Cloud Console в веб-браузере, создайте учетные данные для генерации ключа API с ограничениями.
- На странице с ключом API в разделе «Ограничения приложений» нажмите «Приложения Android».
- Нажмите «Добавить имя пакета и отпечаток» , затем введите имя пакета вашего проекта разработки и отпечаток SHA-1 для этого ключа.
- Нажмите « Сохранить ».
Добавьте SDK навигации в свой проект.
SDK для навигации доступен через Maven или в виде AAR-пакета . После создания проекта разработки вы можете интегрировать в него SDK, используя один из следующих способов.
Для навигации используйте Maven SDK версии 4.5 и выше (рекомендуется).
В приведенном ниже примере используется репозиторий Maven google() , что является самым простым и рекомендуемым способом добавления Navigation SDK в ваш проект.
Добавьте следующую зависимость в конфигурацию 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 при компиляции.
- Настройте свою среду для доступа к репозиторию Maven от Google, как описано в разделе «Предварительные требования» документации по Consumer SDK. Доступ к Navigation SDK контролируется через группу рабочих областей.
Добавьте следующую зависимость в конфигурацию 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.
Загрузите последнюю версию Navigation SDK с общего Google Диска и распакуйте её. Если у вас нет доступа, свяжитесь со своим представителем.
В Android Studio откройте проект и добавьте пакет сервисов Google Play с помощью менеджера SDK .
Скопируйте
libs/google_navigation_navmap.aarиз папки с zip-архивом в папкуapp/libsвашего проекта.Добавьте следующее в
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
- Установите
minSdkVersionравным 23 или выше. - Установите
targetSdkVersionравным 30 или выше. - Добавьте параметр
dexOptions, увеличивающий значениеjavaMaxHeapSize. - Укажите местоположение для дополнительных библиотек.
- Добавьте
repositoriesиdependenciesдля Navigation SDK. - Замените номера версий в зависимостях на номера последних доступных версий.
Дополнительные настройки для сокращения времени сборки.
- Включите сжатие кода и ресурсов с помощью 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-ключ:
- В 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") } }
- Откройте файл
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") }
- Если вы используете Android Studio, синхронизируйте свой проект с Gradle .
- Откройте файл
local.propertiesв директории вашего проекта и добавьте следующий код. ЗаменитеYOUR_API_KEYна ваш API-ключ.MAPS_API_KEY=YOUR_API_KEY
- В файле
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