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

Bu kılavuzda, Android için Navigation SDK'sını kullanmayla ilgili derleme yapılandırma şartları listelenmiştir. Talimatlarda, Android IDE'nizin yüklü olduğu ve Android geliştirme hakkında bilgi sahibi olduğunuz varsayılmaktadır.

Navigasyon SDK'sını kullanmayla ilgili minimum şartlar

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

  • Navigation SDK'nın etkin olduğu bir Google Cloud Console projesi. Hazırlama işlemi için Google Haritalar Platformu temsilcinize danışın.

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

  • Navigasyon SDK'sı ile oluşturulan bir uygulamanın çalışabilmesi için Android cihazda Google Play Hizmetleri yüklü ve etkin olmalıdır.

  • Uygulamaya ilişkilendirmeler ve lisanslama metni eklenmelidir.

Projelerinizi oluşturun: Cloud Console projesi ve Android projesi

Uygulama oluşturmadan veya test etmeden önce bir Cloud Console projesi oluşturmanız ve API anahtarı kimlik bilgileri eklemeniz gerekir. Projenin, Navigasyon SDK'sına erişmek için temel hazırlığı olmalıdır. Cloud Console projesindeki tüm anahtarlara Navigation SDK'ya aynı erişim izni verilir. Bir anahtarla ilişkilendirilmiş birden fazla geliştirme projesi olabilir. Zaten bir konsol projeniz varsa mevcut projenize anahtar ekleyebilirsiniz.

Kurulum için

  1. Favori web tarayıcınızda Cloud Console'da oturum açın ve Cloud Console projenizi oluşturun.
  2. Android Studio gibi bir IDE'nizde 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ızdaki Cloud Console kontrol panelinde, kısıtlamaları olan bir API anahtarı oluşturmak için kimlik bilgileri oluşturun.
  5. API anahtarı sayfasında Uygulama kısıtlamaları bölümünde 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ın SHA-1 parmak izini girin.
  7. Kaydet'i tıklayın.

Navigasyon SDK'sını projenize ekleme

Navigasyon SDK'sı Maven üzerinden veya AAR paketi olarak kullanılabilir. Geliştirme projenizi oluşturduktan sonra aşağıdaki yaklaşımlardan birini kullanarak SDK'yı projeye entegre edebilirsiniz.

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

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

    Gradle

    Modül düzeyindeki build.gradle dosyanıza 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.

    Üst düzey build.gradle dosyanıza aşağıdakileri 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 dosyanıza aşağıdakileri 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ı varsa Haritalar SDK'sına dayanan her beyan edilen bağımlılıkta bu 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>
    

Navigasyon SDK'sı için 4.5 sürümünden önceki sürümlerde veya Sürücü SDK'sıyla Maven kullanma

Navigasyon SDK'sı, v4 sürümlerinin geri kalanında orijinal Maven deposu üzerinden kullanılabilir olmaya devam edecektir. Bu, yukarıdaki sürümle aynı güncellemelere sahip olan ve geçiş sırasında Sürücü SDK'sı ile diğer kitaplıklarla uyumluluk sağlayan aynı kitaplıktır. Bu bağımlılık kullanılabilmesi için derleme sırasında gcloud üzerinden bulut projenize giriş yapmanız gerekir.

  1. Tüketici SDK'sı belgelerinin Ön koşullar bölümünde açıklandığı gibi, ortamınızı Google'ın Maven deposuna erişecek şekilde ayarlayın. Navigation SDK'sına erişim, bir Workspace grubu aracılığıyla kontrol edilir.
  2. Gradle veya Maven yapılandırmanıza aşağıdaki bağımlılığı ekleyin. VERSION_NUMBER yer tutucusunu Navigation SDK'sının istediğiniz sürümüyle değiştirin.

    Gradle

    Modül düzeyindeki build.gradle dosyanıza aşağıdakileri ekleyin:

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

    Üst düzey build.gradle dosyanıza aşağıdakileri 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 dosyanıza aşağıdakileri 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ı varsa Haritalar SDK'sına dayanan her beyan edilen bağımlılıkta bu 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>
    

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

  1. Navigasyon SDK'sının en son sürümünü paylaşılan Google Drive'dan indirip sıkıştırmasını 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 dosyanıza aşağıdakileri ekleyin:

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

    Üst düzey build.gradle dosyanıza aşağıdakileri 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 derlenmesi 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ı Navigation SDK'nın koşullarını karşılayacak şekilde güncellemek için aşağıdaki yönergeleri uygulayın. Ayrıca optimizasyon seçeneklerini de ayarlayabilirsiniz.

    Navigation SDK'sı için gerekli ayarlar

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

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

    • Bağımlılıklardan kullanılmayan kodları ve kaynakları kaldırmak için R8/ProGuard'ı kullanarak kod küçültme ve kaynak küçültme işlemlerini etkinleştirin. R8/ProGuard adımını çalıştırmanın süresi çok uzunsa geliştirme çalışmaları için multidex'i etkinleştirebilirsiniz.
    • Derleme işlemine dahil edilen dil çevirilerinin sayısını azaltın: Geliştirme sırasında bir dil için resConfigs ayarlayın. Nihai derleme için resConfigs değerini, gerçekten kullandığınız diller için ayarlayın. Gradle, varsayılan olarak Navigation SDK'nın desteklediği tüm diller için kaynak dizeleri içerir.

Aşağıda, uygulamanın Gradle derleme komut dosyası örneği verilmiştir. Kullandığınız Navigation SDK sürümü bu dokümanların biraz ilerisinde veya gerisinde 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 ekleme

Bu bölümde, API anahtarınızı uygulamanız tarafından güvenli bir şekilde referans verilebilmesi için nasıl saklamanız gerektiği açıklanmaktadır. API anahtarınızı sürüm kontrol sisteminize eklememeniz gerektiğinden, anahtarı projenizin kök dizininde bulunan secrets.properties dosyasında saklamanızı öneririz. secrets.properties dosyası hakkında daha fazla bilgi için Gradle özellik dosyaları konusuna bakın.

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

Android için Secrets Gradle eklentisini Google Haritalar projenize yüklemek üzere:

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

    Kotlin

    buildscript {
        dependencies {
            classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
        }
    }

    Modern

    buildscript {
        dependencies {
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }
    
  2. Modül düzeyindeki build.gradle.kts veya build.gradle dosyanızı açıp plugins öğesine aşağıdaki kodu ekleyin.

    Kotlin

    plugins {
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }

    Modern

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
  3. Modül düzeyindeki build.gradle.kts veya build.gradle dosyanızda targetSdk ve compileSdk değerlerinin 34 olarak ayarlandığından emin olun.
  4. Dosyayı kaydedin ve projenizi Gradle ile senkronize edin.
  5. Üst düzey dizininizdeki secrets.properties dosyasını açıp aşağıdaki kodu ekleyin. YOUR_API_KEY yerine API anahtarınızı girin. secrets.properties, sürüm kontrol sistemine kontrol edilmekten hariç tutulduğu için anahtarınızı bu dosyada saklayın.
    NAV_API_KEY=YOUR_API_KEY
  6. Dosyayı kaydedin.
  7. local.defaults.properties dosyasını üst düzey dizininizde, secrets.properties dosyasıyla aynı klasörde oluşturun ve ardından aşağıdaki kodu ekleyin.

    NAV_API_KEY=DEFAULT_API_KEY

    Bu dosyanın amacı, secrets.properties dosyası bulunamazsa API anahtarı için yedek bir konum sağlamak ve böylece derlemelerin başarısız olmasını önlemektir. Bu durum, uygulamayı secrets.properties dosyasını atlayan bir sürüm kontrol sisteminden klonladıysanız ve API anahtarınızı sağlamak için henüz yerel olarak bir secrets.properties dosyası oluşturmadıysanız ortaya çıkabilir.

  8. Dosyayı kaydedin.
  9. AndroidManifest.xml dosyanızda com.google.android.geo.API_KEY bölümüne gidin ve android:value attribute değerini güncelleyin. <meta-data> etiketi yoksa <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.kts or build.gradle 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.

    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.*"
    }
            

    Modern

    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.*"
    }
            

Uygulamanıza gerekli ilişkilendirmeleri ekleme

Uygulamanızda Android için Navigasyon SDK'sını kullanıyorsanız ilişkilendirme metnini ve açık kaynak lisanslarını uygulamanızın yasal uyarılar bölümüne eklemeniz gerekir.

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

  • NOTICE.txt
  • LICENSES.txt