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

Bu kılavuzda, Android için Navigation SDK'yı kullanmayla ilgili derleme yapılandırması koşulları listelenmektedir. Talimatlarda, Android IDE'nizin yüklü olduğu ve Android geliştirmeyle ilgili bilgi sahibi olduğunuz varsayılır.

Navigasyon SDK'sını kullanmak için minimum şartlar

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

  • Google Cloud Console

    Navigasyon SDK'sının etkinleştirildiği bir proje. Sağlama için Google Haritalar Platformu temsilcinize danışın.

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

  • Navigation SDK ile oluşturulan bir uygulamayı çalıştırmak için Android cihazda Google Play Hizmetleri'nin yüklü ve etkin olması gerekir.

  • Uygulamaya atfetme 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 bilgilerini eklemeniz gerekir. Projenin, Navigation SDK'ya erişmek için temel hazırlığı yapılmış olması gerekir. Cloud Console projesindeki tüm anahtarlara Navigation SDK'ya aynı erişim izni verilir. Bir anahtarla birden fazla geliştirme projesi ilişkilendirilebilir. Zaten bir konsol projeniz varsa mevcut projenize anahtar ekleyebilirsiniz.

Kurulum için

  1. En sevdiğiniz web tarayıcısında Cloud Console'da oturum açın ve Cloud Console projenizi oluşturun.
  2. Android Studio gibi IDE'nizde bir Android uygulama geliştirme projesi oluşturun ve paket adını not edin.
  3. Google Haritalar Platformu temsilcinizle iletişime geçerek Cloud Console projeniz için Navigation SDK'ye erişim izni verin.
  4. Web tarayıcınızda Cloud Console kontrol panelindeyken kısıtlamalar içeren 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ın SHA-1 parmak izini girin.
  7. Kaydet'i tıklayın.

Navigation SDK'yı projenize ekleme

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

Navigation SDK 4.5 ve sonraki sürümler için Maven'ı kullanın (önerilir)

Aşağıdaki örnekte, Navigation SDK'yı projenize 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ü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 yapay ürün adlarının değiştiğini, com.google.cloud.artifactregistry.gradle-plugin eklentisinin artık gerekli olmadığını unutmayın.

    Ayrıca, ü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 to make nsure 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 alanına 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ınız varsa Haritalar SDK'sını kullanan 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>
    

4.5 sürümünden önceki Navigasyon SDK'sı veya Sürücü SDK'sı ile Maven'i kullanma

Navigation SDK, v4 sürümlerinin geri kalanında orijinal Maven deposu kullanılarak sunulmaya devam edecek. Bu kitaplık, yukarıdaki sürümle aynı kitaplıktır ve aynı güncellemeleri içerir. Ayrıca geçiş sırasında Sürücü SDK'sı ve diğer kitaplıklarla uyumluluk sağlar. Bu bağımlılığı kullanmak için derleme sırasında gcloud kullanarak bulut projenize giriş yapmanız gerekir.

  1. Ortamınızı, Consumer SDK dokümanlarının Ön koşullar bölümünde açıklandığı şekilde Google'ın Maven deposuna erişecek şekilde ayarlayın. Navigation SDK'ya erişim, bir Workspace grubu üzerinden kontrol edilir.
  2. Gradle veya Maven yapılandırmanıza aşağıdaki bağımlılığı ekleyin. VERSION_NUMBER yer tutucusunu Navigation SDK'nın 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'
    }
    

    Ayrıca, ü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 to make sure 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 alanına 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ınız varsa Haritalar SDK'sını kullanan 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>
    

İndirilmiş bir AAR paketi kullanma (önerilmez)

Navigation SDK, 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ılır.

  1. Navigation SDK'nın en son sürümünü paylaşılan Google Drive'dan indirip çıkarı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')
    

    Ayrıca, ü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 to make sure 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, başarılı bir derleme ve Navigation SDK kullanımı için ayarları yapılandırabilirsiniz.

Yerel özellikleri güncelleme

  • Gradle Scripts klasöründe local.properties dosyasını açın ve android.useDeprecatedNdk=true kodunu 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 kullanın. Ayrıca optimizasyon seçeneklerini de ayarlamayı düşünebilirsiniz.

    Navigation SDK 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. dexOptions ayarı ekleyin. Bu ayar, javaMaxHeapSize değerini artırır.
    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 kısaltmak 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üçültmeyi etkinleştirin. R8/ProGuard adımı çok uzun sürüyorsa geliştirme çalışmaları için multidex'i etkinleştirmeyi düşünebilirsiniz.
    • Derlemeye dahil edilen dil çevirilerinin sayısını azaltın: Geliştirme sırasında bir dil için resConfigs değerini ayarlayın. Son derleme için, gerçekten kullandığınız dillerde resConfigs değerini ayarlayın. Gradle, varsayılan olarak Navigation SDK'nın desteklediği tüm diller için kaynak dizeleri içerir.

Aşağıda, uygulama için Gradle derleme komut dosyası örneği verilmiştir. Kullandığınız Navigation SDK sürümü bu dokümantasyondan biraz daha yeni veya eski olabileceğinden, güncellenmiş bağımlılık kümeleri 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. Make sure 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ın uygulamanız tarafından güvenli bir şekilde referans alınabilmesi için nasıl saklanacağı açıklanmaktadır. API anahtarınızı sürüm kontrol sisteminize işlememeniz gerekir. Bu nedenle, anahtarınızı projenizin kök dizininde bulunan secrets.properties dosyasına kaydetmenizi ö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 İçin Secrets Gradle Plugin'i kullanmanızı öneririz.

Google Haritalar projenize Android İçin Secrets Gradle Plugin'i 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çın ve 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. Projenizi Gradle ile senkronize edin.
  5. En üst düzey dizininizde secrets.properties dosyasını açın ve 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 dahil edilmediği için anahtarınızı bu dosyada saklayın.
    MAPS_API_KEY=YOUR_API_KEY
  6. local.defaults.properties dosyasını üst düzey dizininizde, secrets.properties dosyasıyla aynı klasörde oluşturun ve aşağıdaki kodu ekleyin.

    MAPS_API_KEY=DEFAULT_API_KEY

    Bu dosyanın amacı, secrets.properties dosyası bulunamazsa API anahtarı için yedek bir konum sağlamaktır. Böylece derlemeler başarısız olmaz. Bu durum, secrets.properties karakterini atlayan bir sürüm kontrol sisteminden uygulamayı klonlarsanız ve API anahtarınızı sağlamak için henüz yerel olarak bir secrets.properties dosyası oluşturmadıysanız meydana gelebilir.

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

    Not: com.google.android.geo.API_KEY, API anahtarı için önerilen meta veri adıdır. Bu ada sahip bir anahtar, Android platformundaki Android için Navigasyon SDK'sı da dahil olmak üzere birden fazla Google Haritalar tabanlı API'de kimlik doğrulaması yapmak için kullanılabilir. API, geriye dönük uyumluluk için com.google.android.maps.v2.API_KEY adını da destekler. Bu eski ad yalnızca Android Maps API v2'de kimlik doğrulamasına izin verir. Bir uygulama yalnızca API anahtarı meta veri adlarından birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur.

  8. Android Studio'da modül düzeyindeki build.gradle.kts veya build.gradle dosyanızı açın ve secrets özelliğini düzenleyin. secrets özelliği yoksa ekleyin.

    Eklentinin özelliklerini düzenleyerek propertiesFileName değerini secrets.properties, defaultPropertiesFileName değerini local.defaults.properties ve diğer özellikleri ayarlayın.

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

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

Gerekli atıf bilgilerini uygulamanıza ekleyin

Uygulamanızda Android için Navigation SDK'yı kullanıyorsanız uygulamanızın yasal bildirimler bölümüne atıf metni ve açık kaynak lisanslarını eklemeniz gerekir.

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

  • NOTICE.txt
  • LICENSES.txt