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 do nawigacji
Te wymagania dotyczą pakietu SDK do nawigacji na Androida w wersji 4.99 lub starszej.
projekt w konsoli Google Cloud z włączonym pakietem SDK Nawigacji; Aby uzyskać więcej informacji o rezerwacji, skontaktuj się z przedstawicielem Google Maps Platform.
Aplikacja musi być kierowana na interfejs API na poziomie 30 lub wyższym.
Aby uruchomić aplikację utworzoną za pomocą pakietu SDK nawigacji, na urządzeniu z Androidem muszą być zainstalowane i włączone Usługi Google Play.
Tekst dotyczący atrybucji i licencjonowania musi zostać dodany do aplikacji.
Konfigurowanie projektów: projekt Cloud Console i projekt Androida
Zanim utworzysz lub przetestujesz aplikację, musisz utworzyć projekt w Cloud Console i dodać dane logowania do 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 jednym kluczem może być powiązanych więcej niż 1 projekt programistyczny. Jeśli masz już projekt w konsoli, możesz dodać klucz do bieżącego projektu.
Konfigurowanie
- W ulubionej przeglądarce zaloguj się w konsoli Cloud i utwórz projekt w konsoli Cloud.
- W 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 dla swojego projektu w Cloud Console.
- W przeglądarce otwórz panel Cloud Console i 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 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ć w nim pakiet SDK, korzystając z jednego z tych sposobów:
Używanie Maven w pakiecie SDK do nawigacji w wersji 4.5 i nowszych (zalecane)
W tym przykładzie używamy repozytorium google()
Maven, co jest najprostszym i zalecanym sposobem dodawania 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 pliku
build.gradle
na poziomie modułu te elementy:dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }
Jeśli aktualizujesz 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.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' } } }
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 jakiekolwiek zależności, które korzystają z pakietu Maps SDK, musisz wykluczyć tę zależność w przypadku 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 pakiecie SDK do nawigacji w wersji wcześniejszej niż 4.5 lub w pakiecie SDK Drivera
Pakiet SDK nawigacji jest nadal dostępny w pierwotnym repozytorium Maven w pozostałych wersjach w wersji 4. To ta sama biblioteka ze wszystkimi aktualizacjami z powyżej, która zapewnia zgodność z pakietem Driver SDK i innymi bibliotekami podczas przejścia. Korzystanie z tej zależności wymaga zalogowania się w projekcie w chmurze za pomocą gcloud
podczas kompilowania.
- 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 pliku
build.gradle
na poziomie modułu te elementy:dependencies { ... implementation 'com.google.android.maps:navsdk:VERSION_NUMBER' }
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' } } }
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 jakiekolwiek zależności, które korzystają z pakietu Maps SDK, musisz wykluczyć tę zależność w przypadku 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 pobieranego pakietu AAR (niezalecane)
Pakiet SDK do nawigacji jest też dostępny jako pakiet AAR. Po utworzeniu projektu programistycznego możesz zintegrować pakiet SDK. Te instrukcje zakładają użycie Android Studio jako środowiska IDE.
Pobierz najnowszą wersję pakietu SDK nawigacji z wspólnego Dysku Google i rozpakuj go. Jeśli nie masz 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 pliku
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, aby skompilować i użyć pakietu SDK nawigacji.
Aktualizowanie właściwości lokalnych
- W folderze skryptów Gradle otwórz plik
local.properties
i dodajandroid.useDeprecatedNdk=true
.
Zaktualizuj skrypt kompilacji Gradle
Otwórz plik
build.gradle (Module:app)
i na podstawie tych wskazówek zaktualizuj ustawienia, aby spełniały wymagania dotyczące pakietu SDK nawigacji. Możesz też skonfigurować opcje optymalizacji.Wymagania dotyczące ustawień pakietu SDK do nawigacji
- Ustaw wartość
minSdkVersion
na 23 lub więcej. - Ustaw wartość
targetSdkVersion
na co najmniej 30. - Dodaj ustawienie
dexOptions
, które zwiększajavaMaxHeapSize
. - Ustaw lokalizację dodatkowych bibliotek.
- Dodaj
repositories
idependencies
dla pakietu SDK do nawigacji. - 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 lub ProGuard, aby usunąć nieużywany kod i zasoby z zależnych bibliotek. Jeśli wykonanie kroku R8/ProGuard zajmuje zbyt dużo czasu, rozważ włączenie multidexu 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 wersji końcowej 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 znajdziesz przykład skryptu Gradle do kompilacji aplikacji. Sprawdź próbne aplikacje, aby dowiedzieć się, czy zestawy zależności zostały zaktualizowane, ponieważ wersja pakietu SDK Navigation, której używasz, może być nieco nowsza lub starsza niż ta opisana w dokumentacji.
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 przechowywać klucz interfejsu API, aby Twoja aplikacja mogła bezpiecznie się do niego odwoływać. Nie należy go dodawać 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 artykule Pliki 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 Mapy Google:
-
W Android Studio otwórz najwyższy poziom pliku
build.gradle.kts
lubbuild.gradle
i dodaj pod elementembuildscript
kod:dependencies
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ź, czy wartościtargetSdk
icompileSdk
są ustawione na 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, czyli w tym samym folderze co pliksecrets.properties
, a potem dodaj podany niżej kod.NAV_API_KEY=DEFAULT_API_KEY
Ten plik stanowi kopię zapasową klucza interfejsu API na wypadek, gdyby nie udało się znaleźć pliku
secrets.properties
, dzięki czemu kompilacje nie będą się załamywać. 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
otwórzcom.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}" />
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 Navigation 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.kts
orbuild.gradle
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.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 w aplikacji
Jeśli w swojej aplikacji używasz pakietu SDK nawigacji na Androida, w sekcji powiadomień prawnych aplikacji musisz uwzględnić tekst atrybucji i licencja na oprogramowanie open source.
Wymagany tekst atrybucji i licencji open source znajdziesz w pliku ZIP pakietu SDK nawigacji na Androida:
NOTICE.txt
LICENSES.txt
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2024-12-04 UTC.
[null,null,["Ostatnia aktualizacja: 2024-12-04 UTC."],[],[]]