Projenizi oluşturma: Sürüm 4.99 ve önceki sürümler

Bu kılavuzda, Android için Navigasyon SDK'sı. Talimatlarda Android IDE'niz olduğu varsayılır Android'i yüklemiş ve Android geliştirmeye aşinasınız.

Gezinme SDK'sını kullanmaya ilişkin minimum gereksinimler

Bu şartlar, Android 4.99 ve önceki sürümlerde Navigasyon SDK'sı için geçerlidir.

  • Gezinme SDK'sının etkin olduğu bir Google Cloud Console projesi. Temel hazırlık için Google Haritalar Platformu temsilcinize danışın.

  • Uygulamanız API düzeyi 30 veya üstünü hedeflemelidir.

  • Gezinme SDK'sı ile oluşturulmuş bir uygulamayı çalıştırmak için Android cihazda Google Play Hizmetleri olmalıdır yüklü ve etkin.

  • İlişkilendirmeler ve lisanslama metni uygulamaya eklenmesi gerekir.

Projelerinizi kurun: Cloud Console projesi ve Android projesi

Uygulama derlemek veya test etmek için önce Cloud Console projesi oluşturmanız gerekir ve API anahtarı kimlik bilgileri ekleyin. Projeye ait verilere erişmek için projenin Gezinme SDK'sı. Cloud Console projesindeki tüm anahtarlar Gezinme SDK'sına aynı erişim iznine sahip olur. Anahtar birden fazla geliştirme projesi olabilir. Zaten bir konsol projeniz varsa mevcut projenize anahtar ekleyebilirsiniz.

Ayarlamak için

  1. Sık kullandığınız web tarayıcısında oturum açın: Cloud Console'u açın ve Cloud Console belirler.
  2. IDE'nizde (ör. Android Studio) bir Android uygulama geliştirme ve paket adını not edin.
  3. Google Haritalar Platformu temsilcinizle iletişime geçerek Cloud Console'unuz için gezinme SDK'sı belirler.
  4. Web tarayıcınızda Cloud Console kontrol panelindeyken Kısıtlamalara tabi bir API anahtarı oluşturmak için kimlik bilgileri oluşturun.
  5. API anahtarı sayfasında, Uygulama kısıtlamaları bölümünden Android uygulamaları'nı tıklayın. alanı.
  6. Paket adını ve parmak izini ekle'yi tıklayın, ardından paketi girin ve bu anahtarın SHA-1 dijital parmak izini içeren bir.
  7. Kaydet'i tıklayın.

Gezinme SDK'sını projenize ekleme

Gezinme SDK'sı Maven üzerinden veya AAR paketi. Geliştirme projenizi oluşturduktan sonra, şu adımları izleyerek SDK'yı projenize entegre edebilirsiniz: en iyi uygulamaları paylaşacağız.

Aşağıdakiler, verilerin en basiti olan google() Maven deposunu kullanır. ve navigasyon SDK'sı eklemek için önerilen yolu proje

  1. Gradle veya Maven yapılandırmanıza şu bağımlılığı ekleyin: yerine VERSION_NUMBER yer tutucusunu sürümünü kullanabilirsiniz.

    Gradle

    Modül düzeyindeki build.gradle öğenize aşağıdakileri ekleyin:

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

    Orijinal Maven deposundan yükseltme yapıyorsanız grup ve ve yapı adları değişmişse com.google.cloud.artifactregistry.gradle-plugin eklentisi artık kullanılamıyor gerekir.

    Ayrıca, aşağıdakileri de üst düzey build.gradle sayfanıza ekleyin:

    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

    pom.xml cihazınıza şunları ekleyin:

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

    Haritalar SDK'sını kullanan bağımlılıklarınız varsa ve Haritalar SDK'sını temel alan, beyan edilen her bir bağımlılığa bağımlılık.

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

4.5 sürümünden önceki Gezinme SDK'sı için Maven'i veya Driver SDK'sını kullanma

Gezinme SDK'sı, geri kalan v4 sürümlerinin geri kalanı boyunca). Bu, yukarıdaki sürümle aynı güncellemeleri içeren aynı kitaplık ve geçiş sırasında Sürücü SDK'sı ve diğer kitaplıklarla uyumluluğu sağlayabilirsiniz. Kullanım Bu bağımlılık için aşağıdaki durumlarda gcloud üzerinden bulut projenize giriş yapmanız gerekir oluşturuyoruz.

  1. Ortamınızı Google'ın Maven deposuna erişecek şekilde ayarlamak için şu adımları izleyin: Ön koşullar bölümünde bulabilirsiniz. Şuna erişin: Gezinme SDK'sı, bir çalışma alanı grubu aracılığıyla kontrol edilir.
  2. Aşağıdaki bağımlılığı Gradle veya Maven yapılandırmanıza ekleyin. Gezinme SDK'sının istenen sürümü için VERSION_NUMBER yer tutucusu.

    Gradle

    Modül düzeyindeki build.gradle öğenize aşağıdakileri ekleyin:

    dependencies {
      ...
      implementation 'com.google.android.maps:navsdk:VERSION_NUMBER'
    }
    

    Ayrıca, aşağıdakileri de üst düzey build.gradle sayfanıza ekleyin:

    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

    pom.xml cihazınıza şunları ekleyin:

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

    Haritalar SDK'sını kullanan bağımlılıklarınız varsa ve Haritalar SDK'sını temel alan, beyan edilen her bir bağımlılığa bağımlılık.

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

Gezinme SDK'sı, AAR paketi olarak da sunulmaktadır. Geliştirme projesini oluşturduktan sonra SDK'yı entegre edebilirsiniz. Bu talimatlar IDE'niz için Android Studio'nun kullanıldığını varsayın.

  1. Gezinme SDK'sının en son sürümünü indirin ortak Google Drive'dan dosya indirin ve dosyayı açın. Şu durumda: erişimi yok, temsilcinizle iletişime geçin.

  2. Android Studio'da bir proje açın ve Google Play Hizmetleri paketini ekleyin SDK Yöneticisi'ni kullanın.

  3. ZIP dosyası dizininden libs/google_navigation_navmap.aar dosyasını şuraya kopyalayın: projenizin app/libs dizini.

  4. Modül düzeyindeki build.gradle öğenize aşağıdakileri ekleyin:

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

    Ayrıca, aşağıdakileri de üst düzey build.gradle sayfanıza ekleyin:

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

Derlemeyi yapılandırma

Projeyi oluşturduktan sonra, oluşturduğunuz bir Gezinme SDK'sı başarıyla geliştirildi ve kullanıldı.

Yerel mülkleri güncelleme

  • Gradle Komut Dosyaları klasöründe, local.properties dosyasını açın ve android.useDeprecatedNdk=true.

Gradle derleme komut dosyasını güncelleme

  • build.gradle (Module:app) dosyasını açın ve aşağıdaki yönergeleri uygulayarak Gezinme SDK'sı gereksinimlerini karşılamak için ayarları güncelleyin ve optimizasyon seçeneklerini de belirleyebilirsiniz.

    Navigasyon SDK'sı için gerekli ayarlar

    1. minSdkVersion değerini 23 veya sonraki bir değere ayarlayın.
    2. targetSdkVersion değerini 30 veya sonraki bir değere ayarlayın.
    3. javaMaxHeapSize değerini artıran bir dexOptions ayarı ekleyin.
    4. Ek kitaplıkların konumunu ayarlayın.
    5. Gezinme SDK'sı için repositories ve dependencies ekleyin.
    6. Bağımlılıklardaki sürüm numaralarını mevcut en son sürümlerle değiştirin.

    Derleme süresini kısaltmak için isteğe bağlı ayarlar

    • Etkinleştir kod ve kaynak küçültme bağımlılıklardan kullanılmayan kodu ve kaynakları kaldırmak için R8/ProGuard kullanarak. R8/ProGuard adımının çalışması çok fazla zaman alıyorsa, şunları etkinleştirmeyi düşünebilirsiniz: multidex bir proje yöneticisi olarak düşünebilirsiniz.
    • Derlemeye dahil edilen dil çevirilerinin sayısını azaltın: Set Geliştirme sırasında bir dil için resConfigs. Son derleme için, Gerçekte kullandığınız diller için resConfigs. Gradle varsayılan olarak Gezinme SDK'sı tarafından desteklenen tüm diller için kaynak dizeleri.

Aşağıda, uygulamanın Gradle derleme komut dosyası örneğini bulabilirsiniz. Kontrol edin örnek uygulamalar üzerinden, Kullandığınız navigasyon SDK'sı biraz ileride veya bu belgelere bir göz atalım.

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

API anahtarını uygulamanıza ekleyin

Bu bölümde, web siteleri tarafından güvenli bir şekilde referans verilebilmesi için API anahtarınızı nasıl depolayacağınız açıklanmaktadır. en iyi şekilde yararlanabilirsiniz. API anahtarınızı sürüm kontrol sisteminize kontrol etmemeniz gerekir, bu nedenle dosyayı, uygulamanızın kök dizininde bulunan secrets.properties dosyasında depolayarak belirler. secrets.properties dosyası hakkında daha fazla bilgi için bkz. Gradle özellikleri dosyaları.

Bu görevi kolaylaştırmak için Android için Secrets Gradle Plugin.

Google Haritalar projenize Android için Secrets Gradle Eklentisi'ni yüklemek için:

  1. Android Studio'da üst düzey build.gradle veya build.gradle.kts dosyasını seçin ve aşağıdaki kodu altındaki dependencies öğesine ekleyin buildscript.

    Modern

    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. Modül düzeyindeki build.gradle dosyanızı açın ve aşağıdaki kodu plugins öğesi.

    Modern

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

    Kotlin

    plugins {
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
  3. Modül düzeyindeki build.gradle dosyanızda targetSdk ve compileSdk, 34 olarak ayarlandı.
  4. Dosyayı kaydedin ve projenizi Gradle ile senkronize edin.
  5. secrets.properties dosyasını en üst düzey dizininizde açın ve şunu ekleyin: aşağıdaki kodu kullanabilirsiniz. YOUR_API_KEY kısmını API anahtarınızla değiştirin. Anahtarınızı bu dosyada depolayın çünkü secrets.properties, sürüm kontrolüne kontrol edilmekten hariç tutuldu bahsedeceğim.
    NAV_API_KEY=YOUR_API_KEY
  6. Dosyayı kaydedin.
  7. Üst düzey dizininizde local.defaults.properties dosyasını oluşturun. klasörünü secrets.properties dosyası olarak kaydedin, ardından aşağıdaki kodu ekleyin.

    NAV_API_KEY=DEFAULT_API_KEY

    Bu dosyanın amacı, Derlemelerin başarısız olmaması için secrets.properties dosyası bulunamadı. Bu durum, uygulamayı, secrets.properties ve sağlamak için henüz yerel olarak bir secrets.properties dosyası oluşturmadınız API anahtarı.

  8. Dosyayı kaydedin.
  9. AndroidManifest.xml dosyanızda şuna gidin: com.google.android.geo.API_KEY ve android:value attribute öğesini güncelleyin. <meta-data> etiketi mevcut değilse bunu <application> etiketi.
    <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.*"
    }
            

Uygulamanıza gerekli ilişkilendirmeleri dahil edin

Uygulamanızda Android için Navigasyon SDK'sını kullanıyorsanız uygulamanızın yasal uyarılarının bir parçası olarak atıf metni ve açık kaynak lisansları bölümüne bakın.

Gerekli atıf metnini ve açık kaynak lisanslarını şurada bulabilirsiniz: Android zip dosyası için gezinme SDK'sı:

  • NOTICE.txt
  • LICENSES.txt