Na tej stronie dowiesz się, jak zintegrować Navigation SDK z projektem deweloperskim.
Dodawanie pakietu Navigation SDK do projektu
Pakiet Navigation SDK jest dostępny w repozytorium Google Maven.
Pakiet SDK możesz dodać do projektu za pomocą konfiguracji Gradle build.gradle lub Maven pom.xml.
Dodaj do konfiguracji Gradle lub Maven poniższą zależność, zastępując symbol zastępczy
VERSION_NUMBERżądaną wersją pakietu Navigation SDK na Androida.Gradle
Dodaj do pliku
build.gradlena poziomie modułu te informacje:dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }Maven
Dodaj do pliku
pom.xmlte 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 opiera się na pakiecie Maps SDK.
Gradle
Dodaj do pliku
build.gradlenajwyższego poziomu te informacje: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' } } }Maven
Dodaj do pliku
pom.xmlte informacje:<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>
Konfigurowanie kompilacji
Po utworzeniu projektu możesz skonfigurować ustawienia, aby zapewnić prawidłowe kompilowanie i używanie pakietu Navigation SDK.
Aktualizowanie właściwości lokalnych
- W folderze Gradle Scripts otwórz plik
local.propertiesi dodajandroid.useDeprecatedNdk=true.
Aktualizowanie skryptu kompilacji Gradle
Otwórz plik
build.gradle (Module:app)i postępuj zgodnie z tymi wytycznymi, aby zaktualizować ustawienia zgodnie z wymaganiami pakietu Navigation SDK. Rozważ też skonfigurowanie opcji optymalizacji.Wymagane ustawienia pakietu Navigation SDK
- Ustaw wartość
minSdkVersionna 24 lub większą. - Ustaw wartość
targetSdkVersionna 36 lub większą. - Dodaj ustawienie
dexOptions, które zwiększajavaMaxHeapSize. - Ustaw lokalizację dodatkowych bibliotek.
- Dodaj symbole
repositoriesidependenciesdo pakietu Navigation SDK. - Zastąp numery wersji w zależnościach najnowszymi dostępnymi wersjami.
Opcjonalne ustawienia skracające czas kompilacji
- Włącz zmniejszanie kodu i zasobów za pomocą R8/ProGuard, aby usunąć nieużywany kod i zasoby z zależności. Jeśli krok R8/ProGuard trwa zbyt długo, rozważ włączenie multidexu na potrzeby prac programistycznych.
- Zmniejsz liczbę tłumaczeń na inne języki w kompilacji: podczas tworzenia aplikacji ustaw wartość
resConfigsdla jednego języka. W przypadku ostatecznej wersji ustawresConfigsdla języków, których faktycznie używasz. Domyślnie Gradle zawiera ciągi zasobów dla wszystkich języków obsługiwanych przez pakiet SDK Navigation.
Dodanie desugaryzacji na potrzeby obsługi Javy 8
- Jeśli do kompilacji aplikacji używasz wtyczki Androida do obsługi Gradle w wersji 4.0.0 lub nowszej, wtyczka ta rozszerza obsługę wielu interfejsów API języka Java 8. Więcej informacji znajdziesz w artykule Obsługa usuwania składni Java 8. Poniżej znajdziesz przykładowy fragment skryptu kompilacji, który pokazuje, jak używać opcji kompilacji i zależności.
- Używaj wersji Gradle, wtyczki Androida do obsługi Gradle (AGP) i biblioteki Desugar, które są zgodne z wersją pakietu Navigation SDK. Patrz tabela poniżej.
- Bibliotekę Desugar należy włączyć w przypadku modułu
appi każdego modułu, który jest bezpośrednio zależny od pakietu Navigation SDK.
- Ustaw wartość
W tabeli poniżej znajdziesz wersje bibliotek Gradle, AGP i Desugar wymagane w przypadku poszczególnych wersji pakietu Navigation SDK.
| Wersja pakietu Navigation SDK | Wersja Gradle | Wersja AGP | Desugar library |
|---|---|---|---|
| 8.0.0 lub nowsza | 9.1.0 | 9.0.1 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.7.0–7.9.0 | 8.13 | 8.13.2 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.3.0–7.6.0 | 8.11.1 | 8.10.0 | com.android.tools:desugar_jdk_libs_nio:2.0.3 |
Poniżej znajdziesz przykład skryptu kompilacji Gradle dla aplikacji. Sprawdź przykładowe aplikacje, aby uzyskać zaktualizowane zestawy zależności, ponieważ używana wersja pakietu Navigation SDK może być nieco nowsza lub starsza niż ta w dokumentacji.
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.1.5'
}
Dodawanie klucza interfejsu API do aplikacji
W tej sekcji opisujemy, jak przechowywać klucz interfejsu API, aby aplikacja mogła się do niego bezpiecznie odwoływać. Nie należy umieszczać klucza interfejsu API w systemie kontroli wersji, dlatego zalecamy przechowywanie go w pliku secrets.properties znajdującym się w katalogu głównym projektu. Więcej informacji o pliku secrets.properties znajdziesz w artykule Pliki właściwości Gradle.
Aby uprościć to zadanie, zalecamy użycie wtyczki Secrets Gradle Plugin for Android.
Aby zainstalować wtyczkę Gradle obiektów tajnych dla Androida i przechowywać klucz interfejsu API:
-
W Android Studio otwórz plik
build.gradlenajwyższego poziomu i dodaj do elementudependenciesw sekcjibuildscriptten kod:Zakręcony
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") } }
-
Otwórz plik
build.gradlena poziomie aplikacji i dodaj ten kod do elementuplugins.Zakręcony
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- Jeśli używasz Androida Studio, zsynchronizuj projekt z Gradle.
-
Otwórz plik
local.propertiesw katalogu na poziomie projektu, a potem dodaj ten kod: ZastąpYOUR_API_KEYswoim kluczem interfejsu API.MAPS_API_KEY=YOUR_API_KEY
-
Klucz interfejsu API możesz dodać do pliku
AndroidManifest.xmllub podać go programowo.- Dodaj klucz interfejsu API do
AndroidManifest.xml:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />Uwaga:
com.google.android.geo.API_KEYto 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 Navigation SDK na Androida. Aby zapewnić zgodność wsteczną, interfejs API obsługuje też nazwęcom.google.android.maps.v2.API_KEY. Ta starsza nazwa umożliwia uwierzytelnianie tylko w interfejsie API Map Google dla Androida w wersji 2. Aplikacja może określić tylko jedną z nazw metadanych klucza interfejsu API. Jeśli określono oba te parametry, interfejs API zgłasza wyjątek. - Programowe podawanie klucza interfejsu API:
Wtyczka Gradle obiektów tajnych udostępnia klucz w klasie
BuildConfig. W inicjalizacji aplikacji (np. w metodzieApplication.onCreate()) wywołaj metodę w ten sposób:Kotlin
- Dodaj te instrukcje importu:
import com.google.android.libraries.navigation.NavigationApi
- Dodaj do metody
Application.onCreate()te informacje:NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
Java
- Dodaj te instrukcje importu:
import com.google.android.libraries.navigation.NavigationApi;
- Dodaj do metody
Application.onCreate()te informacje:NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
Uwaga: korzystając z funkcjisetApiKey(), pamiętaj o tych kwestiach:- Podaj klucz interfejsu API, który nie jest pusty ani nie ma wartości null.
- Wywołuj funkcję
setApiKey()tylko raz w okresie istnienia aplikacji. Jeśli metoda zostanie wywołana więcej niż raz, zgłosi wyjątekIllegalStateException. - Wywołaj funkcję
setApiKey()przed zainicjowaniem innych komponentów pakietu Navigation SDK, np.Navigator. - Klucz podany w tej metodzie zastępuje dowolny klucz interfejsu API w
AndroidManifest.xml. - Używaj pakietu Navigation SDK w wersji 7.6 lub nowszej.
- Dodaj te instrukcje importu:
- Dodaj klucz interfejsu API do
Dodaj w aplikacji wymagane informacje o autorze
Jeśli w aplikacji używasz pakietu Navigation SDK na Androida, musisz umieścić informację o pochodzeniu danych i licencje open source w sekcji informacji prawnych aplikacji.
Wymagana informacja o pochodzeniu danych i licencje open source znajdziesz w pliku ZIP pakietu SDK Navigation na Androida:
NOTICE.txtLICENSES.txt
Jeśli jesteś klientem Mobility lub Fleet Engine Deliveries
Jeśli korzystasz z usługi Mobility lub Fleet Engine Deliveries, informacje o rozliczeniach znajdziesz w dokumentacji Mobility. Więcej informacji o rejestrowaniu transakcji znajdziesz w artykułach Konfigurowanie rozliczeń, Rejestrowanie transakcji podlegających rozliczeniu, Raportowanie i Rejestrowanie transakcji podlegających rozliczeniu (Android).
Zależności ręczne (nie Gradle/Maven)
Jeśli Twój system kompilacji nie rozwiązuje zależności przechodnich (np. Bazel) lub jeśli integrujesz plik AAR ręcznie, musisz dodać te zależności do projektu. Gradle i Maven rozwiązują je automatycznie.
androidx.datastore:datastore-coreandroidx.datastore:datastore-guavacom.google.guava:listenablefutureandroidx.concurrent:concurrent-futures