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.
Navigation SDK'yı kullanmayla ilgili minimum koşullar
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. 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'nin yüklü ve etkin olması gerekir.
İlişkilendirmeler ve lisanslama metni uygulamaya eklenmelidir.
Projelerinizi oluşturun: Cloud Console projesi ve Android projesi
Uygulama derlemeden veya test etmeden önce 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.
Ayarlamak için
- Favori web tarayıcınızda Cloud Console'da oturum açın ve Cloud Console projenizi oluşturun.
- Android Studio gibi bir IDE'nizde Android uygulama geliştirme projesi oluşturun ve paket adını not edin.
- Cloud Console projeniz için Navigation SDK'sına erişim sağlamak üzere Google Haritalar Platformu temsilcinizle iletişime geçin.
- Web tarayıcınızdaki Cloud Console kontrol panelinde, kısıtlamaları olan bir API anahtarı oluşturmak için kimlik bilgileri oluşturun.
- API anahtarı sayfasında Uygulama kısıtlamaları bölümünde Android uygulamalarını tıklayın.
- 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.
- Kaydet'i tıklayın.
Navigasyon 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.
Navigation SDK v4.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.
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>
Sürüm 4.5'ten önceki Navigation 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.
- 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. Gezinme SDK'sına erişim, bir çalışma alanı grubu aracılığıyla kontrol edilir.
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
öğ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
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ı 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>
İndirilmiş bir AAR paketi kullanma (önerilmez)
Gezinme 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 kullanıldığı varsayılmıştır.
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.
Android Studio'da bir proje açın ve SDK Yöneticisi'ni kullanarak Google Play Hizmetleri paketini ekleyin.
ZIP dosyası dizininden
libs/google_navigation_navmap.aar
dosyasını projenizinapp/libs
dizinine kopyalayın.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 veandroid.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
minSdkVersion
değerini 23 veya sonraki bir değere ayarlayın.targetSdkVersion
değerini 30 veya sonraki bir değere ayarlayın.javaMaxHeapSize
değerini artıran birdexOptions
ayarı ekleyin.- Ek kitaplıkların konumunu ayarlayın.
- Gezinme SDK'sı için
repositories
vedependencies
ekleyin. - 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
- 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ını çalıştırmanın süresi çok uzunsa 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
ayarlayın. Nihai derleme içinresConfigs
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 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 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:
-
Android Studio'da üst düzey
build.gradle.kts
veyabuild.gradle
dosyanızı açın ve aşağıdaki kodubuildscript
altındakidependencies
öğesine 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" } }
-
Modül düzeyindeki
build.gradle.kts
veyabuild.gradle
dosyanızı açıpplugins
öğ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' }
- Modül düzeyindeki
build.gradle.kts
veyabuild.gradle
dosyanızdatargetSdk
vecompileSdk
değerlerinin 34 olarak ayarlandığından emin olun. - Dosyayı kaydedin ve projenizi Gradle ile senkronize edin.
-
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
- Dosyayı kaydedin.
-
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 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 birsecrets.properties
dosyası oluşturmadıysanız bu durum ortaya çıkabilir. - Dosyayı kaydedin.
-
AndroidManifest.xml
dosyanızdacom.google.android.geo.API_KEY
bölümüne gidin veandroid: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 için Navigasyon SDK'sı dahil olmak üzere Android platformunda Google Haritalar tabanlı birden fazla API'nin kimliğini doğrulamak için kullanılabilir. API, geriye dönük uyumluluk içincom.google.android.maps.v2.API_KEY
adını da destekler. Bu eski ad, yalnızca Android Maps API v2 ile kimlik doğrulamasına olanak tanır. Bir uygulama, API anahtarı meta veri adlarından yalnızca birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur. -
Android Studio'da modül düzeyindeki
build.gradle.kts
veyabuild.gradle
dosyanızı açıpsecrets
mülkünü düzenleyin.secrets
özelliği yoksa ekleyin.Eklentinin özelliklerini düzenleyerek
propertiesFileName
özelliğinisecrets.properties
,defaultPropertiesFileName
değerinilocal.defaults.properties
olarak ayarlayın 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" // 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 dahil edin
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 Gezinme SDK'sı zip dosyasında bulabilirsiniz:
NOTICE.txt
LICENSES.txt