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

Bu kılavuzda, Android için Gezinme SDK'sını kullanmayla ilgili derleme yapılandırması gereksinimleri listelenmektedir. Talimatlarda, yüklü bir Android IDE'nin olduğu ve Android geliştirme yapma konusunda bilgi sahibi olduğunuz varsayılır.

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 yüklü ve etkinleştirilmiş olmalıdır.

  • İlişkilendirmeler ve lisanslama metni uygulamaya eklenmelidir.

Projelerinizi kurun: Cloud Console projesi ve Android projesi

Uygulama derlemek veya test etmek için önce Cloud Console projesi oluşturmanız ve API anahtarı kimlik bilgileri eklemeniz gerekir. Gezinme SDK'sına erişmek için projede temel hazırlık yapılması gerekir. Cloud Console projesindeki tüm anahtarlara Navigasyon SDK'sına aynı erişim izni verilir. Bir anahtarla ilişkili birden fazla geliştirme projesi olabilir. Zaten bir konsol projeniz varsa mevcut projenize anahtar ekleyebilirsiniz.

Ayarlamak için

  1. En sevdiğiniz web tarayıcısında Cloud Console'da oturum açın ve Cloud Console projenizi oluşturun.
  2. IDE'nizde (ör. Android Studio) bir Android uygulama geliştirme projesi oluşturun ve paket adını not edin.
  3. Cloud Console projeniz için Navigasyon SDK'sına erişim sağlamak üzere Google Haritalar Platformu temsilcinizle iletişime geçin.
  4. Web tarayıcınızın Cloud Console kontrol panelindeyken kısıtlamalarla bir API anahtarı oluşturmak için kimlik bilgileri oluşturun.
  5. API anahtarı sayfasında, Uygulama kısıtlamaları alanında Android uygulamaları'nı tıklayın.
  6. Paket adını ve parmak izini ekle'yi tıklayın, ardından geliştirme projenizin paket adını ve bu anahtar için SHA-1 parmak izini girin.
  7. Kaydet'i tıklayın.

Gezinme SDK'sını projenize ekleme

Gezinme SDK'sı Maven aracılığıyla veya AAR paketi olarak sunulur. Geliştirme projenizi oluşturduktan sonra, aşağıdaki yaklaşımlardan birini kullanarak SDK'yı projenize entegre edebilirsiniz.

Aşağıda, projenize Navigasyon SDK'sı eklemenin en basit ve önerilen yolu olan google() Maven deposu kullanılmaktadır.

  1. Aşağıdaki bağımlılığı Gradle veya Maven yapılandırmanıza ekleyerek Android için Navigation SDK'nın istediğiniz sürümü yerine VERSION_NUMBER yer tutucusunu ekleyin.

    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 yapı adlarının değiştiğini ve com.google.cloud.artifactregistry.gradle-plugin eklentisinin artık gerekli olmadığını unutmayın.

    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 Haritalar SDK'sını temel alan, beyan edilen her bağımlılıktaki bağımlılığı hariç tutmanız gerekir.

    <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ı, v4 sürümlerinin geri kalanında orijinal Maven deposu üzerinden kullanılmaya devam eder. Bu, yukarıdaki sürümle aynı güncellemelere sahip olan aynı kitaplıktır ve geçiş sırasında Driver SDK'sı ve diğer kitaplıklar ile uyumluluk sağlar. Bu bağımlılığı kullanmak için derleme sırasında gcloud üzerinden bulut projenize giriş yapmanız gerekir.

  1. Ortamınızı, Tüketici SDK'sı dokümanlarının Ön koşullar bölümünde açıklandığı şekilde Google'ın Maven deposuna erişecek şekilde ayarlayın. Gezinme SDK'sına erişim, 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. Bunun için navigasyon SDK'sının istediğiniz sürümü için VERSION_NUMBER yer tutucusunu kullanın.

    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 Haritalar SDK'sını temel alan, beyan edilen her bağımlılıktaki bağımlılığı hariç tutmanız gerekir.

    <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 talimatlarda, IDE'niz için Android Studio kullanıldığı varsayılmıştır.

  1. Gezinme SDK'sının en son sürümünü paylaşılan Google Drive'dan indirin ve sıkıştırılmış dosyayı açın. Erişiminiz yoksa temsilcinizle iletişime geçin.

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

  3. ZIP dosyası dizininden libs/google_navigation_navmap.aar dosyasını projenizin app/libs dizinine kopyalayın.

  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, Navigation SDK'nın başarılı bir şekilde oluşturulması ve kullanılması için ayarları yapılandırabilirsiniz.

Yerel mülkleri güncelleme

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

Gradle derleme komut dosyasını güncelleme

  • build.gradle (Module:app) dosyasını açın ve ayarları, Navigasyon SDK'sı gereksinimlerini karşılayacak şekilde güncellemek ve optimizasyon seçeneklerini de ayarlamayı değerlendirmek için aşağıdaki yönergeleri kullanın.

    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

    • Kullanılmayan kodları ve kaynakları bağımlılıklardan kaldırmak için R8/ProGuard kullanarak kod ve kaynak küçültmeyi etkinleştirin. R8/ProGuard adımı çok fazla zaman alıyorsa geliştirme çalışmaları için multidex'i etkinleştirmeyi düşünün.
    • Derlemeye dahil edilen dil çevirilerinin sayısını azaltın: Geliştirme sırasında bir dil için resConfigs ayarlayın. Son derleme için, kullandığınız diller için resConfigs değerini ayarlayın. Gradle, varsayılan olarak Gezinme SDK'sının desteklediği tüm diller için kaynak dizeleri içerir.

Aşağıda, uygulamanın Gradle derleme komut dosyası örneğini bulabilirsiniz. Kullandığınız Gezinme SDK'sı sürümü bu dokümanların biraz önünde veya arkasında olabileceğinden güncellenmiş bağımlılık grupları için örnek uygulamaları kontrol edin.

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, uygulamanız tarafından güvenli bir şekilde referans verilebilmesi için API anahtarınızı nasıl depolayacağınız açıklanmaktadır. API anahtarınızı sürüm kontrol sisteminizde kontrol etmemeniz gerekir. Bu nedenle, projenizin kök dizininde bulunan secrets.properties dosyasında saklamanızı öneririz. secrets.properties dosyası hakkında daha fazla bilgi için Gradle özellikleri dosyaları bölümüne bakın.

Bu görevi kolaylaştırmak için Android için Secrets Gradle Eklentisi'ni kullanmanızı öneririz.

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 dosyanızı açın ve aşağıdaki kodu buildscript altındaki dependencies öğesine ekleyin.

    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 plugins öğesine aşağıdaki kodu ekleyin.

    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 öğelerinin 34 olarak ayarlandığından emin olun.
  4. Dosyayı kaydedin ve projenizi Gradle ile senkronize edin.
  5. En üst düzey dizininizde secrets.properties dosyasını açın ve ardından aşağıdaki kodu ekleyin. YOUR_API_KEY kısmını API anahtarınızla değiştirin. secrets.properties, sürüm kontrol sistemine kontrol edilmekten hariç tutulduğu için anahtarınızı bu dosyada depolayın.
    NAV_API_KEY=YOUR_API_KEY
  6. Dosyayı kaydedin.
  7. local.defaults.properties dosyasını en üst düzey dizininizde, secrets.properties dosyasıyla aynı klasörde oluşturun ve aşağıdaki kodu ekleyin.

    NAV_API_KEY=DEFAULT_API_KEY

    Bu dosyanın amacı, secrets.properties dosyası bulunamazsa API anahtarı için yedek konum sağlayarak derlemelerin başarısız olmasını sağlamaktır. Uygulamayı secrets.properties içermeyen bir sürüm kontrol sisteminden klonlarsanız ve henüz API anahtarınızı sağlamak için yerel olarak bir secrets.properties dosyası oluşturmadıysanız bu durum ortaya çıkabilir.

  8. Dosyayı kaydedin.
  9. AndroidManifest.xml dosyanızda com.google.android.geo.API_KEY bölümüne gidip android:value attribute dosyasını güncelleyin. <meta-data> etiketi yoksa bu etiketi <application> etiketinin alt öğesi olarak oluşturun.
    <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 bölümünün bir parçası olarak atıf metni ve açık kaynak lisansları eklemeniz gerekir.

Gerekli ilişkilendirme metnini ve açık kaynak lisanslarını, Android için Gezinme SDK'sı zip dosyasında bulabilirsiniz:

  • NOTICE.txt
  • LICENSES.txt