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ı şartları listelenmiştir. Talimatlarda, Android IDE'nin yüklü olduğu ve Android geliştiricisi olduğunuz varsayılır.

Navigation SDK'yı kullanmak için minimum koşullar

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

  • Google Cloud Console

    Navigation SDK'nın etkin olduğu bir proje. Temel hazırlık için Google Haritalar Platformu temsilcinizle iletişime geçin.

  • Uygulamanız API düzeyi 30 veya sonraki sürümleri 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 atıf ve lisans metni eklenmelidir.

Projelerinizi ayarlama: 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ığı olmalıdır. Cloud Console projesindeki tüm anahtarlara Navigation SDK'ya aynı erişim izni verilir. Bir anahtarla ilişkili birden fazla geliştirme projesi olabilir. Zaten bir konsol projeniz varsa mevcut projenize anahtar ekleyebilirsiniz.

Kurulum

  1. Tercih ettiğiniz web tarayıcısında Cloud Console'da oturum açın ve Cloud Console projenizi oluşturun.
  2. Android Studio gibi bir IDE'de 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ızda Cloud Console kontrol panelindeyken kısıtlamaları olan 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

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

Navigasyon SDK'sı 4.5 ve sonraki sürümler için Maven'ı kullanma (önerilir)

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

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

    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 da 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 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ınız varsa Haritalar SDK'sını kullanan her beyan edilen bağımlılıkta 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ı için veya Sürücü SDK'sı ile Maven'ı kullanma

Navigation SDK, v4 sürümlerinin geri kalanında orijinal Maven deposu kullanılarak kullanılabilir olmaya devam eder. Bu, yukarıdaki sürümle aynı güncellemelere sahip olan aynı kitaplıktır ve 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. Tüketici SDK'sı belgelerinin Ön koşullar bölümünde açıklandığı şekilde Google'ın Maven deposuna erişmek için ortamınızı ayarlayın. Navigation SDK'ya erişim, bir Workspace grubu üzerinden kontrol edilir.
  2. VERSION_NUMBER yer tutucusunu Navigasyon SDK'sının sürümüyle değiştirerek Gradle veya Maven yapılandırmanıza aşağıdaki bağımlılığı ekleyin.

    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 da 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 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ınız varsa Haritalar SDK'sını kullanan her beyan edilen bağımlılıkta 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>
    

İndirilen bir AAR paketini 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. Paylaşılan Google Drive'dan Navigation SDK'nın en yeni sürümünü indirip ayıklayın. Erişiminiz yoksa temsilcinizle iletişime geçin.

  2. Android Studio'da bir proje açın ve SDK Manager'ı 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 da 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, 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 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 şartlarını karşılayacak şekilde güncellemek için aşağıdaki talimatları uygulayın. Optimizasyon seçeneklerini de ayarlayabilirsiniz.

    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. 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 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 daraltma ve kaynak daraltma özelliğini etkinleştirin. R8/ProGuard adımının çalışması çok uzun sürüyorsa geliştirme çalışmaları için multidex'i etkinleştirebilirsiniz.
    • 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 resConfigs değerini, gerçekten kullandığınız diller olarak ayarlayın. Gradle, varsayılan olarak Navigation SDK tarafından desteklenen 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ümandan biraz daha yeni veya eski olabileceğinden güncellenmiş bağımlılık grupları için örnek uygulamaları inceleyin.

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 denetim sisteminize işlememeniz gerekir. Bu nedenle, anahtarınızı projenizin kök dizininde bulunan secrets.properties dosyasına kaydetmenizi ve bu dosyayı sürüm denetiminin dışında tutmanızı öneririz. Gradle özellik dosyaları hakkında daha fazla bilgi için Gradle özellik dosyaları konusuna bakın.

Bu görevi basitleştirmek için Android için Secrets Gradle Plugin'i kullanmanızı öneririz.

Android için Secrets Gradle Eklentisi'ni yüklemek ve API anahtarınızı depolamak için:

  1. Android Studio'da üst düzey build.gradle.kts veya build.gradle dosyanızı açın ve aşağıdaki kodu plugins bloğuna ekleyin.

    Kotlin

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

    Modern

    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
    }
  2. Modül düzeyindeki build.gradle.kts veya build.gradle dosyanızı açın ve aşağıdaki kodu plugins öğesine ekleyin.

    Kotlin

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

    Modern

    plugins {
        id 'com.android.application'
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
  3. Android Studio kullanıyorsanız projenizi Gradle ile senkronize edin.
  4. 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. API anahtarınızı sürüm denetimine eklememek için secrets.properties dosyanıza .gitignore eklediğinizden (veya sürüm denetim sisteminizden hariç tuttuğunuzdan) emin olun.
    MAPS_API_KEY=YOUR_API_KEY
  5. En üst düzey dizininizde, secrets.properties dosyasıyla aynı klasörde local.defaults.properties dosyasını oluşturun ve aşağıdaki kodu ekleyin.

    MAPS_API_KEY=DEFAULT_API_KEY

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

  6. API anahtarını AndroidManifest.xml dosyanıza ekleyebilir veya API anahtarını programatik olarak sağlayabilirsiniz.
    • API anahtarınızı AndroidManifest.xml uygulamasına ekleyin:
      <meta-data
          android:name="com.google.android.geo.API_KEY"
          android:value="${MAPS_API_KEY}" />
              

      Not: API anahtarı için önerilen meta veri adı com.google.android.geo.API_KEY şeklindedir. Bu ada sahip bir anahtar, Android için Navigasyon SDK'sı da dahil olmak üzere Android platformundaki Google Haritalar tabanlı birden fazla 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ğrulamaya olanak tanır. Bir uygulama, API anahtarı meta veri adlarından yalnızca birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur.

    • API anahtarını programatik olarak sağlayın:

      Secrets Gradle Plugin, anahtarı BuildConfig sınıfında kullanılabilir hale getirir. Uygulamanızın başlatma işleminde (örneğin, Application.onCreate() yönteminizde) yöntemi aşağıdaki gibi çağırın:

      Kotlin

      1. Aşağıdaki içe aktarma ifadelerini ekleyin:
        import com.google.android.libraries.navigation.NavigationApi
      2. Application.onCreate() yönteminize aşağıdakileri ekleyin:
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)

      Java

      1. Aşağıdaki içe aktarma ifadelerini ekleyin:
        import com.google.android.libraries.navigation.NavigationApi;
      2. Application.onCreate() yönteminize aşağıdakileri ekleyin:
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
      Not: setApiKey() kullanırken aşağıdakileri göz önünde bulundurun:
      • Boş olmayan bir API anahtarı girin.
      • setApiKey() yöntemini uygulamanızın kullanım süresi boyunca yalnızca bir kez çağırın. Yöntem, birden fazla kez çağrılırsa IllegalStateException hatası verir.
      • Navigator gibi diğer Navigasyon SDK'sı bileşenlerini başlatmadan önce setApiKey() yöntemini çağırın.
      • Bu yöntemle sağladığınız anahtar, AndroidManifest.xml dosyanızdaki tüm API anahtarlarını geçersiz kılar.
      • Navigation SDK'nın 7.6 veya sonraki bir sürümünü kullanın.
  7. Android Studio'da modül düzeyindeki build.gradle.kts veya build.gradle dosyanızı açıp 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" olarak ayarlayın ve diğer özellikleri belirleyin.

    Kotlin

    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root 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 root directory (the same folder as the root 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"
    }

Uygulamanıza gerekli atıfları ekleme

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

Gerekli atıf metnini ve açık kaynak lisanslarını Android için Navigasyon SDK'sı ZIP dosyasında bulabilirsiniz:

  • NOTICE.txt
  • LICENSES.txt