В этой статье рассказывается, как настроить проект Android Studio для использования Maps SDK для Android, не применяя шаблон Google Карт, описанный в кратком руководстве.
Шаблон Google Карт автоматически задает конфигурацию для проекта и добавляет базовую карту. Однако вы также можете добавить карту в проект Android, где используется другой шаблон Android Studio. Для этого необходимо вручную изменить настройки проекта, а затем добавить карту.
Шаг 1. Настройте Android Studio
В этом документе описывается среда разработки с Android Studio Hedgehog и плагином Android Gradle версии 8.2.
Шаг 2. Настройте SDK
Библиотека Maps SDK для Android доступна в репозитории Google Maven. Чтобы добавить SDK в приложение, выполните следующие действия:
- Добавьте портал плагина Gradle, репозиторий Google Maven и центральный репозиторий Maven в блок
pluginManagement
файлаsettings.gradle
верхнего уровня. БлокpluginManagement
должен находиться над всеми операторами скрипта.pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } }
- Добавьте репозиторий Google Maven и центральный репозиторий Maven в блок
dependencyResolutionManagement
файлаsettings.gradle
верхнего уровня:dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } }
- В файле
build.gradle
на уровне модуля добавьте сервисы Google Play в качестве зависимости Maps SDK для Android:Groovy
dependencies { // Maps SDK for Android implementation 'com.google.android.gms:play-services-maps:18.2.0' }
Kotlin
dependencies { // Maps SDK for Android implementation("com.google.android.gms:play-services-maps:18.2.0") }
- В файле
build.gradle
на уровне модуля присвойтеcompileSdk
иminSdk
указанные ниже значения.Groovy
android { compileSdk 34 defaultConfig { minSdk 19 // ... } }
Kotlin
android { compileSdk = 34 defaultConfig { minSdk = 19 // ... } }
- В разделе
buildFeatures
файлаbuild.gradle
уровня модуля добавьте классBuildConfig
. Он позволит получать значения метаданных, которые будут определены позже.Groovy
android { // ... buildFeatures { buildConfig true // ... } }
Kotlin
android { // ... buildFeatures { buildConfig = true // ... } }
Шаг 3. Добавьте ключ API в проект
В этом разделе рассказывается, как настроить безопасный вызов ключа API вашим приложением. Вводить ключ API в систему управления версиями нежелательно, поэтому мы рекомендуем хранить его в файле secrets.properties
, который находится в корневом каталоге проекта. Подробные сведения о файле secrets.properties
можно найти в описании файлов свойств Gradle.
Чтобы упростить работу, используйте плагин Secrets Gradle для Android.
Чтобы установить плагин Secrets Gradle для Android в проект Google Карт:
-
В Android Studio откройте файл
build.gradle
илиbuild.gradle.kts
верхнего уровня и добавьте в элементdependencies
, принадлежащий элементуbuildscript
, приведенный ниже код.Groovy
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
-
Откройте файл
build.gradle
уровня модуля и добавьте в элементplugins
приведенный ниже код.Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- Убедитесь, что для
targetSdk
иcompileSdk
в файлеbuild.gradle
уровня модуля задано значение 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}" />
Note:
com.google.android.geo.API_KEY
is the recommended metadata name for the API key. A key with this name can be used to authenticate to multiple Google Maps-based APIs on the Android platform, including the Maps SDK for Android. For backwards compatibility, the API also supports the namecom.google.android.maps.v2.API_KEY
. This legacy name allows authentication to the Android Maps API v2 only. An application can specify only one of the API key metadata names. If both are specified, the API throws an exception. -
In Android Studio, open your module-level
build.gradle
orbuild.gradle.kts
file and edit thesecrets
property. If thesecrets
property does not exist, add it.Edit the properties of the plugin to set
propertiesFileName
tosecrets.properties
, setdefaultPropertiesFileName
tolocal.defaults.properties
, and set any other properties.Groovy
secrets { // Optionally specify a different file name containing your secrets. // The plugin defaults to "local.properties" propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }
Kotlin
secrets { // Optionally specify a different file name containing your secrets. // The plugin defaults to "local.properties" propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }
Шаг 4. Обновите манифест приложения
В этом разделе описаны настройки, которые необходимо добавить в файл
AndroidManifest.xml
.Версия сервисов Google Play
Добавьте в элемент
application
приведенный ниже код, чтобы указать версию сервисов Google Play, которая использовалась при компиляции приложения.<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
Доступ к данным о местоположении
Если приложению требуется доступ к данным о местоположении пользователя, вы должны запросить разрешение в файле
AndroidManifest.xml
. Доступны следующие варианты:ACCESS_FINE_LOCATION
(точное местоположение) иACCESS_COARSE_LOCATION
(менее точное). Дополнительную информацию вы можете найти в руководстве по работе с данными о местоположении.Чтобы запросить разрешение
ACCESS_FINE_LOCATION
, добавьте в элементmanifest
следующий код:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Разрешение на доступ к внешнему хранилищу
Если ваше приложение предназначено для SDK сервисов Google Play версии 8.3 или более поздней, вам не понадобится разрешение
WRITE_EXTERNAL_STORAGE
. А если для более ранних, то необходимо запросить разрешение WRITE_EXTERNAL_STORAGE в элементеmanifest
.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Библиотека Apache HTTP Legacy
Если вы используете версию
com.google.android.gms:play-services-maps:16.0.0
или более раннюю, но ваше приложение обращается к API 28-го уровня (Android 9.0) или более поздней версии, добавьте приведенный ниже код в элемент<application>
файлаAndroidManifest.xml
. В остальных случаях делать это не нужно.<uses-library android:name="org.apache.http.legacy" android:required="false" />
Шаг 5. Настройте устройство Android
Чтобы запустить приложение с Maps SDK для Android, разверните его на устройстве Android или в эмуляторе ОС Android 4.0 или более поздней версии, поддерживающем API Google.
- Чтобы использовать устройство Android, следуйте инструкциям о том, как запускать приложения на физических устройствах.
- Чтобы воспользоваться эмулятором Android, создайте виртуальное устройство и установите эмулятор с помощью Менеджера AVD, который доступен в Android Studio.
Шаг 6. Проверьте, поддерживаются ли сервисы Google Play (необязательно)
Для работы с Maps SDK для Android необходимо, чтобы на устройстве, где развертывается приложение, были установлены сервисы Google Play. Google предоставляет метод, с помощью вызова которого можно выполнить проверку. Подробнее о том, как проверить, установлены ли сервисы Google Play…
Дальнейшие действия
Завершив настройку проекта, вы сможете добавить в приложение карту.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-05-10 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Отсутствует нужная мне информация" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Слишком сложен/слишком много шагов" },{ "type": "thumb-down", "id": "outOfDate", "label":"Устарел" },{ "type": "thumb-down", "id": "translationIssue", "label":"Проблема с переводом текста" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Проблемы образцов/кода" },{ "type": "thumb-down", "id": "otherDown", "label":"Другое" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Прост для понимания" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Помог мне решить мою проблему" },{ "type": "thumb-up", "id": "otherUp", "label":"Другое" }]