Z tego przewodnika dowiesz się, jakie wymagania dotyczące konfiguracji kompilacji musisz spełnić, aby korzystać z Navigation SDK na Androida. W tych instrukcjach przyjęliśmy, że masz zainstalowane środowisko IDE na Androida i znasz się na programowaniu na Androida.
Minimalne wymagania dotyczące korzystania z pakietu SDK nawigacji
Te wymagania dotyczą pakietu SDK nawigacji na Androida w wersji 4.99 lub starszej.
projekt w konsoli Google Cloud z włączonym pakietem SDK Nawigacji; Aby uzyskać pomoc, skontaktuj się z przedstawicielem Google Maps Platform.
Aplikacja musi być kierowana na interfejs API na poziomie 30 lub wyższym.
Aby uruchomić aplikację stworzoną przy użyciu pakietu Navigation SDK, na urządzeniu z Androidem muszą być zainstalowane i włączone Usługi Google Play.
Do aplikacji trzeba dodać informacje o atrybucji i licencjach.
Konfigurowanie projektów: projekt Cloud Console i projekt Androida
Zanim skompilujesz lub przetestujesz aplikację, musisz utworzyć projekt w konsoli Cloud i dodać dane logowania klucza interfejsu API. Projekt musi mieć skonfigurowany dostęp do pakietu SDK nawigacji. Wszystkie klucze w projekcie konsoli Cloud mają taki sam dostęp do pakietu SDK nawigacji. Z kluczem może być powiązany więcej niż 1 projekt programisty. Jeśli masz już projekt w konsoli, możesz dodać do niego klucz.
Konfigurowanie
- W ulubionej przeglądarce zaloguj się w konsoli Cloud i utwórz projekt w konsoli Cloud.
- W środowisku IDE, takim jak Android Studio, utwórz projekt tworzenia aplikacji na Androida i zapisz nazwę pakietu.
- Skontaktuj się z przedstawicielem Google Maps Platform, aby uzyskać dostęp do pakietu SDK nawigacji w przypadku projektu Cloud Console.
- W panelu Cloud Console w przeglądarce utwórz dane logowania, aby wygenerować klucz interfejsu API z ograniczeniami.
- Na stronie klucza interfejsu API w obszarze Ograniczenia aplikacji kliknij Aplikacje na Androida.
- Kliknij Dodaj nazwę pakietu i odcisk cyfrowy, a następnie wpisz nazwę pakietu projektu programistycznego i odcisk cyfrowy SHA-1 dla tego klucza.
- Kliknij Zapisz.
Dodawanie do projektu pakietu SDK nawigacji
Pakiet SDK Nawigacji jest dostępny w Maven lub jako pakiet AAR. Po utworzeniu projektu programistycznego możesz zintegrować z nim pakiet SDK, korzystając z jednej z poniższych metod.
Używanie Mavena do obsługi pakietu SDK nawigacji w wersji 4.5 lub nowszej (zalecane)
Poniższe polecenie korzysta z repozytorium Maven google()
, które jest najprostszym i zalecanym sposobem dodania pakietu SDK nawigacji do projektu
Dodaj do konfiguracji Gradle lub Maven następującą zależność, zastępując miejsce zapełnienia
VERSION_NUMBER
żądaną wersją pakietu SDK nawigacji na Androida.Gradle
Dodaj do
build.gradle
na poziomie modułu te elementy:dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }
Jeśli przechodzisz na nową wersję z pierwotnego repozytorium Maven, pamiętaj, że nazwy grup i elementów uległy zmianie, a wtyczka
com.google.cloud.artifactregistry.gradle-plugin
nie jest już potrzebna.Do
build.gradle
najwyższego poziomu dodaj te elementy:allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies. This is to ensure 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' } } }
Maven
Dodaj do pliku
pom.xml
te informacje:<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>
Jeśli masz zależności, które korzystają z pakietu Maps SDK, musisz wykluczyć zależność w każdej zadeklarowanej zależności, która korzysta z pakietu 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>
Korzystanie z Maven w przypadku pakietu SDK Nawigacji w wersji wcześniejszej niż 4.5 lub z pakietem SDK Kierowcy
Pakiet SDK nawigacji jest nadal dostępny w pierwotnym repozytorium Maven w pozostałych wersjach w ramach pakietu SDK w wersji 4. To ta sama biblioteka ze wszystkimi aktualizacjami z powyżej, która zapewnia zgodność z Driver SDK i innymi bibliotekami podczas przejścia. Aby korzystać z tej zależności, podczas kompilacji musisz zalogować się do projektu w chmurze za pomocą interfejsu gcloud
.
- Skonfiguruj środowisko, aby uzyskać dostęp do repozytorium Maven Google zgodnie z opisem w sekcji Wstępne wymagania w dokumentacji pakietu Consumer SDK. Dostęp do pakietu SDK nawigacji jest kontrolowany przez grupę Workspace.
Dodaj tę zależność do konfiguracji Gradle lub Maven, zastępując miejsce zapełnienia
VERSION_NUMBER
żądaną wersją pakietu SDK Nawigacji.Gradle
Dodaj do
build.gradle
na poziomie modułu te elementy:dependencies { ... implementation 'com.google.android.maps:navsdk:VERSION_NUMBER' }
Do
build.gradle
najwyższego poziomu dodaj te elementy:allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies. This is to ensure 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' } } }
Maven
Dodaj do pliku
pom.xml
te informacje:<dependencies> ... <dependency> <groupId>com.google.android.maps</groupId> <artifactId>navsdk</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>
Jeśli masz zależności, które korzystają z pakietu Maps SDK, musisz wykluczyć zależność w każdej zadeklarowanej zależności, która korzysta z pakietu 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>
Korzystanie z pobranego pakietu AAR (niezalecane)
Pakiet Navigation SDK jest również dostępny jako pakiet AAR. Po utworzeniu projektu programistycznego możesz zintegrować pakiet SDK. Te instrukcje dotyczą używania Android Studio w IDE.
Pobierz najnowszą wersję pakietu Navigation SDK z udostępnionego Dysku Google i rozpakuj ją. Jeśli nie masz do niej dostępu, skontaktuj się z przedstawicielem.
W Android Studio otwórz projekt i dodaj pakiet Usługi Google Play za pomocą Menedzera pakietu SDK.
Z katalogu pliku zip skopiuj folder
libs/google_navigation_navmap.aar
do kataloguapp/libs
projektu.Dodaj do
build.gradle
na poziomie modułu te elementy:implementation(name: 'google_navigation_navmap', ext: 'aar')
Dodaj te informacje do pliku
build.gradle
najwyższego poziomu:allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies. This is to ensure 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' } } }
Konfigurowanie kompilacji
Po utworzeniu projektu możesz skonfigurować ustawienia pod kątem udanej kompilacji i użycia pakietu Navigation SDK.
Aktualizowanie właściwości lokalnych
- W folderze skryptów Gradle otwórz plik
local.properties
i dodajandroid.useDeprecatedNdk=true
.
Aktualizowanie skryptu kompilacji Gradle
Otwórz plik
build.gradle (Module:app)
i postępuj zgodnie z poniższymi wskazówkami, aby zaktualizować ustawienia tak, aby spełniały wymagania pakietu Navigation SDK, i zastanów się nad ustawieniem opcji optymalizacji.Wymagane ustawienia pakietu Navigation SDK
- Ustaw wartość
minSdkVersion
na 23 lub więcej. - Ustaw
targetSdkVersion
na 30 lub więcej. - Dodaj ustawienie
dexOptions
, które zwiększajavaMaxHeapSize
. - Ustaw lokalizację dodatkowych bibliotek.
- Dodaj
repositories
idependencies
dla pakietu SDK Nawigacji. - Zastąp numery wersji w zależnościach najnowszymi dostępnymi wersjami.
Opcjonalne ustawienia skracające czas kompilacji
- Włącz ograniczanie kodu i ograniczanie zasobów przy użyciu R8/ProGuard, aby usunąć z zależności nieużywany kod i zasoby. Jeśli wykonanie kroku R8/ProGuard trwa zbyt długo, rozważ włączenie multidex na potrzeby prac programistycznych.
- Zmniejsz liczbę tłumaczeń językowych uwzględnionych w kompilacji: podczas tworzenia ustaw opcję
resConfigs
dla jednego języka. W przypadku ostatecznej wersji ustawresConfigs
dla języków, których używasz. Domyślnie Gradle zawiera ciągi znaków zasobu we wszystkich językach obsługiwanych przez pakiet SDK nawigacji.
- Ustaw wartość
Poniżej znajduje się przykład skryptu kompilacji Gradle dla aplikacji. Sprawdź w przykładowych aplikacjach, czy dostępne są zaktualizowane zestawy zależności, ponieważ wersja pakietu Navigation SDK, której używasz, może być nieco późniejsza lub późniejsza niż ta dokumentacją.
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. Ensure 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'
}
Dodawanie klucza interfejsu API do aplikacji
W tej sekcji opisujemy, jak zapisać klucz interfejsu API, aby aplikacja mogła się do niego bezpiecznie odwoływać. Nie należy sprawdzać klucza interfejsu API w systemie kontroli wersji, więc zalecamy zapisanie go w pliku secrets.properties
, który znajduje się w katalogu głównym projektu. Więcej informacji o pliku secrets.properties
znajdziesz w artykule o plikach właściwości Gradle.
Aby usprawnić to zadanie, zalecamy użycie wtyczki Gradle obiektów tajnych na Androida.
Aby zainstalować wtyczkę Gradle obiektów tajnych na Androida w projekcie Map Google:
-
W Android Studio otwórz plik
build.gradle.kts
lubbuild.gradle
najwyższego poziomu i dodaj poniższy kod do elementudependencies
w sekcjibuildscript
.Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
Zakręcony
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
-
Otwórz plik
build.gradle.kts
lubbuild.gradle
na poziomie modułu i dodaj do elementuplugins
ten kod:Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Zakręcony
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- W pliku
build.gradle.kts
lubbuild.gradle
na poziomie modułu sprawdź, czytargetSdk
icompileSdk
mają wartość 34. - Zapisz plik i zsynchronizuj projekt z Gradle.
-
Otwórz plik
secrets.properties
w katalogu najwyższego poziomu, a potem dodaj ten kod. ZastąpYOUR_API_KEY
swoim kluczem API. Przechowuj klucz w tym pliku, ponieważsecrets.properties
nie jest uwzględniany w systemie kontroli wersji.NAV_API_KEY=YOUR_API_KEY
- Zapisz plik.
-
Utwórz plik
local.defaults.properties
w katalogu najwyższego poziomu, w tym samym folderze co pliksecrets.properties
, a potem dodaj podany niżej kod.NAV_API_KEY=DEFAULT_API_KEY
Ten plik zawiera kopię zapasową klucza interfejsu API na wypadek, gdyby plik
secrets.properties
nie został znaleziony. Pozwala to uniknąć błędu kompilacji. Może się tak zdarzyć, jeśli skopiujesz aplikację z systemu kontroli wersji, który pomija pliksecrets.properties
, a na komputerze lokalnym nie masz jeszcze utworzonego plikusecrets.properties
, aby podać klucz interfejsu API. - Zapisz plik.
-
W pliku
AndroidManifest.xml
przejdź do sekcjicom.google.android.geo.API_KEY
i zaktualizujandroid:value attribute
. Jeśli tag<meta-data>
nie istnieje, utwórz go jako element podrzędny tagu<application>
.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
Uwaga:
com.google.android.geo.API_KEY
to zalecana nazwa metadanych klucza interfejsu API. Klucz o tej nazwie może służyć do uwierzytelniania w wielu interfejsach API opartych na Mapach Google na platformie Android, w tym w pakiecie SDK Navigation SDK na Androida. Aby zapewnić zgodność wsteczną, interfejs API obsługuje też nazwęcom.google.android.maps.v2.API_KEY
. Ten starszy identyfikator umożliwia uwierzytelnianie tylko w ramach interfejsu Mapy Google na Androida w wersji 2. Aplikacja może podać tylko jedną z nazwy metadanych klucza interfejsu API. Jeśli podasz oba te elementy, API zgłosi wyjątek. -
W Android Studio otwórz plik
build.gradle.kts
lubbuild.gradle
na poziomie modułu i edytuj właściwośćsecrets
. Jeśli właściwośćsecrets
nie istnieje, dodaj ją.Zmień właściwości wtyczki, aby ustawić
propertiesFileName
nasecrets.properties
,defaultPropertiesFileName
nalocal.defaults.properties
i wszystkie inne właściwości.Kotlin
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" // 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.*" }
Zakręcony
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" // 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.*" }
Dodaj wymagane informacje o przypisaniu w aplikacji
Jeśli w swojej aplikacji używasz pakietu Navigation SDK na Androida, w sekcji Informacje prawne musisz uwzględnić tekst atrybucji i licencje open source.
Wymagany tekst atrybucji i licencji open source znajdziesz w pliku ZIP pakietu SDK nawigacji na Androida:
NOTICE.txt
LICENSES.txt