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 Google
Maven
Repository.
Możesz dodać pakiet SDK do projektu, korzystając z konfiguracji Gradle build.gradle lub Maven pom.xml.
Dodaj do konfiguracji Gradle lub Maven tę 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 bazuje na pakiecie Maps SDK.
Gradle
Dodaj do pliku
build.gradlena najwyższym poziomie 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 kompilacja i korzystanie z pakietu Navigation SDK przebiegały bezproblemowo.
Aktualizowanie właściwości lokalnych
- W folderze skryptów Gradle 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 wskazówkami, aby zaktualizować ustawienia zgodnie z wymaganiami pakietu Navigation SDK. Rozważ też ustawienie opcji optymalizacji.Wymagane ustawienia pakietu Navigation SDK
- Ustaw
minSdkVersionna 24 lub wyższą. - Ustaw
targetSdkVersionna 36 lub wyższą. - Dodaj ustawienie
dexOptions, które zwiększajavaMaxHeapSize. - Ustaw lokalizację dodatkowych bibliotek.
- Dodaj
repositoriesidependenciesdla 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 wykonanie kroku R8/ProGuard trwa zbyt długo, rozważ włączenie multidexu na potrzeby prac deweloperskich.
- Zmniejsz liczbę tłumaczeń językowych uwzględnianych w kompilacji: podczas programowania ustaw
resConfigsdla 1 języka. W przypadku kompilacji końcowej 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 Navigation SDK.
Dodawanie desugaryzacji na potrzeby obsługi języka Java 8
- Jeśli kompilujesz aplikację za pomocą wtyczki Androida do obsługi Gradle w wersji 4.0.0 lub nowszej, wtyczka rozszerza obsługę korzystania z wielu interfejsów API języka Java 8. Więcej informacji znajdziesz w artykule Obsługa desugaryzacji języka Java 8. Sposób kompilowania i opcje zależności znajdziesz w przykładowym fragmencie skryptu kompilacji poniżej.
- W przypadku Androida w wersji 7.7.0 lub nowszej musisz używać Gradle 8.13, wtyczki Androida do obsługi Gradle w wersji 8.13.2 oraz biblioteki Desugar
com.android.tools:desugar_jdk_libs_nio:2.1.5. - W przypadku Androida w wersji od 7.3.0 do 7.6.0 musisz używać Gradle 8.11.1, wtyczki Androida do obsługi Gradle w wersji 8.10.0 oraz biblioteki Desugar
com.android.tools:desugar_jdk_libs_nio:2.0.3. - Biblioteka Desugar musi być włączona w module
appi w każdym module, który jest bezpośrednio zależny od pakietu Navigation SDK.
- Ustaw
Poniżej znajdziesz przykład skryptu kompilacji Gradle dla aplikacji. Sprawdź przykładowe aplikacje, aby zobaczyć zaktualizowane zestawy zależności, ponieważ wersja pakietu Navigation SDK, której używasz, może być nieco nowsza lub starsza niż ta dokumentacja.
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 dodawać klucza interfejsu API do systemu 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
Pliki właściwości Gradle.
Aby uprościć to zadanie, zalecamy używanie wtyczki Gradle obiektów tajnych na Androida .
Aby zainstalować wtyczkę Gradle obiektów tajnych na Androida i zapisać klucz interfejsu API:
-
W Androidzie Studio otwórz plik
build.gradlena poziomie głównym i dodaj ten kod do elementudependenciesw sekcjibuildscript.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") } }
-
Otwórz plik
build.gradlena poziomie aplikacji i dodaj ten kod do elementuplugins.Groovy
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
-
Możesz dodać klucz interfejsu API do pliku
AndroidManifest.xmllub podać go programowo.- Dodaj klucz interfejsu API do pliku
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 zachować 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 na Androida w wersji 2. Aplikacja może określić tylko jedną z nazw metadanych klucza interfejsu API. Jeśli zostaną określone obie nazwy, interfejs API zgłosi wyjątek. - Podaj klucz interfejsu API programowo:
Wtyczka Gradle obiektów tajnych udostępnia klucz w klasie
BuildConfig. Podczas inicjowania 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: podczas korzystania zsetApiKey()pamiętaj o tych kwestiach:- Podaj klucz interfejsu API, który nie jest pusty ani nie zawiera wartości null.
- Wywołaj
setApiKey()tylko raz w całym cyklu życia aplikacji. Jeśli metoda zostanie wywołana więcej niż raz, zgłosi wyjątekIllegalStateException. - Wywołaj
setApiKey()przed zainicjowaniem innych komponentów pakietu Navigation SDK, takich jakNavigator. - Klucz podany za pomocą tej metody zastępuje każdy klucz interfejsu API w pliku
AndroidManifest.xml. - Używaj pakietu Navigation SDK w wersji 7.6 lub nowszej.
- Dodaj te instrukcje importu:
- Dodaj klucz interfejsu API do pliku
Dodawanie wymaganych informacji o autorze do aplikacji
Jeśli w aplikacji używasz pakietu Navigation SDK na Androida, musisz dodać 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 Navigation SDK na Androida:
NOTICE.txtLICENSES.txt
Jeśli jesteś klientem usług mobilnych lub Fleet Engine Deliveries
Jeśli jesteś klientem usług mobilnych lub Fleet Engine Deliveries, dowiedz się więcej o rozliczeniach w dokumentacji usług mobilnych. 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 system kompilacji nie rozwiązuje zależności przechodnich (np. Bazel) lub jeśli integrujesz 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