Na tej stronie dowiesz się, jak zintegrować pakiet Navigation SDK z projektem deweloperskim.
Dodawanie pakietu Navigation SDK do projektu
Pakiet Navigation SDK jest dostępny w repozytorium Maven Google.
Pakiet SDK możesz dodać do projektu za pomocą konfiguracji Gradle build.gradle lub Maven pom.xml.
Dodaj do konfiguracji Gradle lub Maven podaną niżej zależność, zastępując symbol zastępczy
VERSION_NUMBERwybraną 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 jakiekolwiek 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 umożliwić prawidłowe skompilowanie i używanie pakietu Navigation SDK.
Aktualizowanie lokalnych właściwości
- 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. Możesz też skonfigurować opcje optymalizacji.Wymagane ustawienia pakietu Navigation SDK
- Ustaw wartość
minSdkVersionna 23 lub większą. - Ustaw wartość
targetSdkVersionna 34 lub większą. - Dodaj ustawienie
dexOptions, które zwiększajavaMaxHeapSize. - Ustaw lokalizację dodatkowych bibliotek.
- Dodaj symbole
repositoriesidependenciesdo pakietu SDK Navigation. - 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.
Dodano desugaryzację na potrzeby obsługi Javy 8
- Jeśli kompilujesz aplikację za pomocą 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 sekcji Obsługa usuwania nieużywanych funkcji z kodu w Java 8. Poniżej znajdziesz przykładowy fragment skryptu kompilacji, który pokazuje, jak używać opcji kompilacji i zależności.
- Zalecamy używanie Gradle w wersji 8.4, wtyczki Androida do obsługi Gradle w wersji 8.3.0 i biblioteki Desugar
com.android.tools:desugar_jdk_libs_nio:2.0.3. Ta konfiguracja jest zgodna z pakietem Navigation SDK na Androida w wersji 6.0.0 lub nowszej. - Biblioteka Desugar musi być włączona w przypadku modułu
appi każdego modułu, który jest bezpośrednio zależny od pakietu Navigation SDK.
- Ustaw wartość
Poniżej znajdziesz przykład skryptu kompilacji Gradle dla aplikacji. Sprawdź przykładowe aplikacje, aby poznać zaktualizowane zestawy zależności, ponieważ używana wersja pakietu Navigation SDK może być nieco nowsza lub starsza niż ta, która jest opisana 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.0.3'
}
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, który znajduje 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 Gradle obiektów tajnych na Androida.
Aby zainstalować wtyczkę Gradle obiektów tajnych na Androida i zapisać klucz interfejsu API:
-
W Android Studio otwórz plik
build.gradlenajwyższego poziomu i dodaj podany niżej kod do elementudependenciesw sekcjibuildscript.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 następnie dodaj ten kod: ZastąpYOUR_API_KEYswoim kluczem interfejsu API.MAPS_API_KEY=YOUR_API_KEY
-
W pliku
AndroidManifest.xmlotwórzcom.google.android.geo.API_KEYi zaktualizuj atrybutandroid:valuew ten sposób:<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 Android Maps API w wersji 2. Aplikacja może określić tylko jedną nazwę metadanych klucza interfejsu API. Jeśli określono oba te parametry, interfejs API zgłosi wyjątek.
Dodaj w aplikacji wymagane informacje o autorze
Jeśli w aplikacji używasz pakietu Navigation SDK na Androida, musisz umieścić tekst atrybucji i licencje open source w sekcji informacji prawnych aplikacji.
Wymagany tekst atrybucji i licencje open source znajdziesz w pliku ZIP pakietu SDK do nawigacji 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 płatności, Rejestrowanie transakcji podlegających opłacie, Raportowanie i Rejestrowanie transakcji podlegających opłacie (Android).