Konfigurowanie projektu – wersja 4.99 lub wcześniejsze

W tym przewodniku znajdziesz wymagania dotyczące konfiguracji kompilacji przy korzystaniu z komponentów Pakiet SDK do nawigacji na Androida. W instrukcjach przyjęto, że masz Android IDE. masz zainstalowaną aplikację i znasz podstawy programowania na Androida.

Minimalne wymagania dotyczące korzystania z pakietu SDK nawigacji

Te wymagania dotyczą pakietu Navigation SDK na Androida w wersji 4.99 lub starszej.

  • Projekt konsoli Google Cloud z włączonym pakietem Navigation SDK. 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, pakiet Android urządzenie musi mieć Usługi Google Play. zainstalowana i włączona.

  • Atrybucja i tekst licencji należy dodać do aplikacji.

Konfigurowanie projektów: projekt z konsoli Cloud i projekt na Androida

Zanim skompilujesz lub przetestujesz aplikację, musisz utworzyć projekt w Cloud Console i dodać dane uwierzytelniające klucza interfejsu API. Projekt musi mieć obsługę administracyjną, aby uzyskać dostęp do Pakiet SDK do nawigacji. Wszystkie klucze w projekcie Cloud Console mają te same uprawnienia dostępu do pakietu Navigation SDK. Klucz może być powiązany z więcej niż 1 projektem deweloperskim. Jeśli masz już projekt w konsoli, możesz dodać do niego klucz.

Aby skonfigurować:

  1. W ulubionej przeglądarce zaloguj się w Cloud Console i utwórz Konsola Cloud w projektach AI.
  2. W IDE, na przykład w Android Studio, utwórz aplikację na Androida. projektu i zanotuj nazwę pakietu.
  3. Skontaktuj się z przedstawicielem Google Maps Platform, aby poprosić o dostęp do Pakiet Navigation SDK na potrzeby konsoli Cloud w projektach AI.
  4. W panelu Cloud Console w przeglądarce: tworzyć dane uwierzytelniające w celu wygenerowania klucza interfejsu API z ograniczeniami.
  5. Na stronie klucza interfejsu API w sekcji Ograniczenia aplikacji kliknij Aplikacje na Androida. w pobliżu.
  6. Kliknij Dodaj nazwę i odcisk cyfrowy pakietu, a następnie wpisz pakiet. nazwę projektu programistycznego i odcisk cyfrowy SHA-1 dla tego klucza.
  7. Kliknij Zapisz.

Dodawanie pakietu Navigation SDK do projektu

Pakiet Navigation SDK jest dostępny w aplikacji Maven lub jako Pakiet AAR. Po utworzeniu projektu programistycznego możesz zintegrować z nim pakiet SDK przez używając jednej z poniższych metod.

Poniższe polecenie korzysta z najprostszego repozytorium Maven google() i zalecany sposób dodania pakietu Navigation SDK do projekt

  1. Dodaj tę zależność do konfiguracji Gradle lub Maven: , zastępując zmienną VERSION_NUMBER wartością wybraną wersję pakietu Navigation SDK na Androida.

    Gradle

    Dodaj do build.gradle na poziomie modułu te elementy:

    dependencies {
      ...
      implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER'
    }
    

    W przypadku uaktualniania z pierwotnego repozytorium Maven pamiętaj, że grupa i nazwy artefaktów uległy zmianie, a Wtyczka com.google.cloud.artifactregistry.gradle-plugin już nie jest niezbędną.

    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 pom.xml:

    <dependencies>
      ...
      <dependency>
        <groupId>com.google.android.libraries.navigation</groupId>
        <artifactId>navigation</artifactId>
        <version>VERSION_NUMBER</version>
      </dependency>
    </dependencies>
    

    Jeśli korzystasz z jakichkolwiek zależności, które korzystają z pakietu Maps SDK, musisz wykluczyć w każdej zadeklarowanej zależności, która bazuje na pakiecie SDK Maps Google.

    <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 pakietu Maven for Navigation SDK w wersji starszej niż 4.5 lub z pakietem Driver SDK

Pakiet Navigation SDK jest nadal dostępny w w pozostałych wersjach v4. To jest z tymi samymi aktualizacjami co wersja powyżej oraz zapewnia zgodność z pakietem Driver SDK i innymi bibliotekami w okresie przejściowym. Zastosowanie ta zależność wymaga logowania się do projektu w chmurze za pomocą interfejsu gcloud, gdy kompilację danych.

  1. Skonfiguruj środowisko, aby uzyskać dostęp do repozytorium Google Maven zgodnie z opisem w Wymagania wstępne w dokumentacji pakietu SDK dla klientów indywidualnych. Dostęp do Pakietem SDK nawigacji steruje grupa obszaru roboczego.
  2. Dodaj poniższą zależność do konfiguracji Gradle lub Maven, zastępując Obiekt zastępczy VERSION_NUMBER, który wskazuje odpowiednią wersję pakietu Navigation SDK.

    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 pom.xml:

    <dependencies>
      ...
      <dependency>
        <groupId>com.google.android.maps</groupId>
        <artifactId>navsdk</artifactId>
        <version>VERSION_NUMBER</version>
      </dependency>
    </dependencies>
    

    Jeśli korzystasz z jakichkolwiek zależności, które korzystają z pakietu Maps SDK, musisz wykluczyć w każdej zadeklarowanej zależności, która bazuje na pakiecie SDK Maps Google.

    <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>
    

Pakiet Navigation SDK jest również dostępny jako pakiet AAR. Po utworzeniu projektu programistycznego możesz zintegrować pakiet SDK. Te instrukcje zakłada użycie Android Studio na potrzeby IDE.

  1. Pobierz najnowszą wersję pakietu Navigation SDK z udostępnionego Dysku Google i rozpakuj go. Jeśli nie masz dostępu, skontaktuj się z przedstawicielem.

  2. W Android Studio otwórz projekt i dodaj pakiet Usług Google Play za pomocą Menedżera SDK.

  3. Z katalogu plików ZIP skopiuj libs/google_navigation_navmap.aar do katalogu app/libs Twojego projektu.

  4. Dodaj do build.gradle na poziomie modułu te elementy:

    implementation(name: 'google_navigation_navmap', ext: 'aar')
    

    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'
            }
        }
    }
    

Konfigurowanie kompilacji

Po utworzeniu projektu możesz skonfigurować ustawienia udanej kompilacji i wykorzystania pakietu Navigation SDK.

Zaktualizuj właściwości lokalne

  • W folderze Gradle Scripts otwórz plik local.properties i dodaj android.useDeprecatedNdk=true

Aktualizowanie skryptu kompilacji Gradle

  • Otwórz plik build.gradle (Module:app). Postępuj zgodnie z tymi wskazówkami, aby zaktualizuj ustawienia, aby spełniały wymagania pakietu Navigation SDK oraz rozważyć ustawienie opcji optymalizacji.

    Wymagane ustawienia pakietu Navigation SDK

    1. Ustaw minSdkVersion na 23 lub więcej.
    2. Ustaw targetSdkVersion na 30 lub więcej.
    3. Dodaj ustawienie dexOptions, które zwiększa wartość javaMaxHeapSize.
    4. Ustaw lokalizację dodatkowych bibliotek.
    5. Dodaj repositories i dependencies dla pakietu Navigation SDK.
    6. Zastąp numery wersji w zależnościach najnowszymi dostępnymi wersjami.

    Opcjonalne ustawienia pozwalające skrócić czas kompilacji

    • Włącz zmniejszanie kodu i zasobów przy użyciu 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 multidex, przy tworzeniu aplikacji.
    • Zmniejsz liczbę tłumaczeń na języki zawarte w kompilacji: ustaw resConfigs dla 1 języka w trakcie tworzenia. Aby uzyskać ostateczną kompilację, ustaw resConfigs. Domyślnie Gradle zawiera: ciągi zasobów dla wszystkich języków obsługiwanych przez pakiet Navigation SDK.

Poniżej znajduje się przykład skryptu kompilacji Gradle dla aplikacji. Zajrzyj do przykładowych aplikacji dla zaktualizowanych zbiorów zależności, Pakiet SDK nawigacji, którego używasz, może być nieco późniejszy lub za tę 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 opisano, jak zapisać klucz interfejsu API, aby umożliwić bezpieczne korzystanie z niego do aplikacji. Nie sprawdzaj klucza interfejsu API w systemie kontroli wersji, dlatego zalecamy i przechowywanie go w pliku secrets.properties, który znajduje się w katalogu głównym instancji w projektach AI. Więcej informacji o pliku secrets.properties znajdziesz tutaj: Pliki właściwości Gradle.

Aby usprawnić to zadanie, zalecamy skorzystanie z Wtyczka Gradle obiektów tajnych na Androida.

Aby zainstalować wtyczkę Gradle obiektów tajnych na Androida w projekcie Map Google:

  1. W Android Studio otwórz build.gradle lub build.gradle.kts najwyższego poziomu. i dodaj ten kod do elementu dependencies pod buildscript

    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")
        }
    }
    
  2. Otwórz plik build.gradle na poziomie modułu i dodaj poniższy kod do sekcji plugins.

    Zakręcony

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }

    Kotlin

    plugins {
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
  3. W pliku build.gradle na poziomie modułu sprawdź, czy targetSdk oraz compileSdk mają wartość 34.
  4. Zapisz plik i zsynchronizować projekt z Gradle.
  5. Otwórz plik secrets.properties w katalogu najwyższego poziomu, a następnie dodaj atrybut tego kodu. Zastąp YOUR_API_KEY swoim kluczem interfejsu API. Przechowuj klucz w tym pliku ponieważ secrets.properties nie jest sprawdzany w kontroli wersji systemu.
    NAV_API_KEY=YOUR_API_KEY
  6. Zapisz plik.
  7. Utwórz plik local.defaults.properties w katalogu najwyższego poziomu, tak samo jako plik secrets.properties, a potem dodaj podany niżej kod.

    NAV_API_KEY=DEFAULT_API_KEY

    Ten plik ma na celu udostępnienie zapasowej lokalizacji klucza interfejsu API, jeśli plik Nie znaleziono pliku secrets.properties, więc kompilacje nie zawierają błędów. Może się tak zdarzyć, jeśli sklonujesz aplikację z systemu kontroli wersji, który pomija secrets.properties oraz nie utworzyłeś jeszcze lokalnie pliku secrets.properties, który umożliwi przesyłanie klucz interfejsu API.

  8. Zapisz plik.
  9. W pliku AndroidManifest.xml otwórz com.google.android.geo.API_KEY i zaktualizuj android: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 name com.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.

  10. In Android Studio, open your module-level build.gradle or build.gradle.kts file and edit the secrets property. If the secrets property does not exist, add it.

    Edit the properties of the plugin to set propertiesFileName to secrets.properties, set defaultPropertiesFileName to local.defaults.properties, and set any other properties.

    Groovy

    secrets {
        // Optionally specify a different file name containing your secrets.
        // The plugin defaults to "local.properties"
        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.*"
    }
            

    Kotlin

    secrets {
        // Optionally specify a different file name containing your secrets.
        // The plugin defaults to "local.properties"
        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.*"
    }
            

Umieść w aplikacji wymagane informacje o źródłach

Jeśli w swojej aplikacji używasz pakietu Navigation SDK na Androida, musisz dodać tekstu informacji o źródle i licencji open source jako część informacji prawnych dotyczących aplikacji. .

Wymagany tekst atrybucji i licencje open source znajdziesz w Plik ZIP pakietu Navigation SDK na Androida:

  • NOTICE.txt
  • LICENSES.txt