Bu kılavuzda, Android için Navigasyon SDK'sını kullanmayla ilgili derleme yapılandırma gereksinimleri listelenmektedir. Talimatlarda Android IDE'nin yüklü olduğu ve Android geliştirme konusunda bilgi sahibi olduğunuz varsayılır.
Gezinme SDK'sı kullanımı için minimum gereksinimler
Bu şartlar, Android için Navigasyon SDK'sının 4.99 ve önceki sürümlerinde geçerlidir.
Gezinme SDK'sinin etkin olduğu bir Google Cloud Console projesi. Temel hazırlık için Google Haritalar Platformu temsilcinizden bilgi isteyin.
Uygulamanız API düzeyi 30 veya üstünü hedeflemelidir.
Navigasyon SDK'sı ile oluşturulmuş bir uygulamayı çalıştırmak için Android cihazda Google Play Hizmetleri yüklü ve etkin olmalıdır.
İlişkilendirmeler ve lisanslama metni uygulamaya eklenmelidir.
Projelerinizi oluşturun: Cloud Console projesi ve Android projesi
Bir uygulamayı derlemeden veya test etmeden önce bir Cloud Console projesi oluşturmanız ve API anahtarı kimlik bilgilerini eklemeniz gerekir. Gezinme SDK'sına erişmek için projede temel hazırlık yapılması gerekir. Cloud Console projesindeki tüm anahtarlara Gezinme 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
- En sevdiğiniz web tarayıcısında Cloud Console'da oturum açın ve Cloud Console projenizi oluşturun.
- IDE (ör. Android Studio) bir Android uygulaması geliştirme projesi oluşturun ve paket adını not edin.
- Cloud Console projeniz için Navigasyon SDK'sına erişim izni vermek amacıyla Google Haritalar Platformu temsilcinizle iletişime geçin.
- Web tarayıcınızdaki Cloud Console kontrol panelinde, kısıtlamalı API anahtarı oluşturmak için kimlik bilgileri oluşturun.
- API anahtarı sayfasında, Uygulama kısıtlamaları alanında Android uygulamaları'nı tıklayın.
- Paket adını ve parmak izini ekle'yi tıklayıp geliştirme projenizin paket adını ve bu anahtar için SHA-1 parmak izini girin.
- Kaydet'i tıklayın.
Gezinme SDK'sını projenize ekleyin
Gezinme SDK'sı Maven üzerinden veya AAR paketi olarak sunulur. Geliştirme projenizi oluşturduktan sonra, aşağıdaki yaklaşımlardan birini kullanarak SDK'yı projenize entegre edebilirsiniz.
Navigasyon SDK'sı v4.5 ve sonraki sürümleri için Maven kullanma (önerilir)
Aşağıda, projenize Gezinme SDK'sı eklemenin en basit ve önerilen yolu olan google()
Maven deposu kullanılmaktadır.
Android için istediğiniz Gezinme SDK'sı sürümü ile
VERSION_NUMBER
yer tutucusunu değiştirerek aşağıdaki bağımlılığı Gradle veya Maven yapılandırmanıza ekleyin.Gradle
Modül düzeyindeki
build.gradle
bölümünüze 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 üst düzey
build.gradle
öğenize 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 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 herhangi bir bağımlılığınız varsa bu bağımlılığı Google Haritalar SDK'sına dayanan beyan edilen her bağımlılıkta 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>
Maven for Navigation SDK'sı sürüm 4.5'ten önce veya Sürücü SDK'sı ile kullanma
Gezinme SDK'sı, diğer v4 sürümleri boyunca orijinal Maven deposu üzerinden kullanılmaya devam edecektir. Bu kitaplık, yukarıdaki sürümle tamamen aynı güncellemelere sahiptir ve geçiş sırasında Driver SDK'sı ve diğer kitaplıklarla uyumluluk sağlar. Bu bağımlılığı kullanmak, derleme sırasında gcloud
aracılığıyla bulut projenize giriş yapılmasını gerektirir.
- Ortamınızı, Tüketici SDK'sı belgelerinin Önkoş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 üzerinden kontrol edilir.
VERSION_NUMBER
yer tutucusunu istediğiniz Gezinme SDK sürümü ile değiştirerek aşağıdaki bağımlılığı Gradle veya Maven yapılandırmanıza ekleyin.Gradle
Modül düzeyindeki
build.gradle
bölümünüze aşağıdakileri ekleyin:dependencies { ... implementation 'com.google.android.maps:navsdk:VERSION_NUMBER' }
Ayrıca, aşağıdakileri üst düzey
build.gradle
öğenize 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 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 herhangi bir bağımlılığınız varsa bu bağımlılığı Google Haritalar SDK'sına dayanan beyan edilen her bağımlılıkta 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)
Gezinme SDK'sı AAR paketi olarak da mevcuttur. Geliştirme projesini oluşturduktan sonra SDK'yı entegre edebilirsiniz. Bu talimatlarda, IDE'niz için Android Studio'nun kullanıldığı varsayılmıştır.
Paylaşılan Google Drive'dan Gezinme SDK'sinin en son sürümünü indirin ve sıkıştırılmış dosyayı 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
bölümünüze aşağıdakileri ekleyin:implementation(name: 'google_navigation_navmap', ext: 'aar')
Ayrıca, aşağıdakileri üst düzey
build.gradle
öğenize 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, Navigasyon SDK'sını başarılı bir şekilde oluşturmak ve kullanmak için ayarları yapılandırabilirsiniz.
Yerel mülkleri güncelle
- 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ı, Gezinme SDK'sı gereksinimlerini karşılayacak şekilde güncellemek ve optimizasyon seçeneklerini belirlemek için aşağıdaki yönergeleri kullanın.Navigasyon SDK'sı için gerekli ayarlar
minSdkVersion
değerini 23 veya üzeri bir değere ayarlayın.targetSdkVersion
öğesini 30 veya üzeri bir değere ayarlayın.javaMaxHeapSize
değerini artıran birdexOptions
ayarı ekleyin.- Ek kitaplıkların konumunu ayarlayın.
- Gezinme SDK'si için
repositories
vedependencies
öğelerini ekleyin. - 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 kod ve kaynakları bağımlılıklardan kaldırmak için R8/ProGuard kullanarak kod küçültmeyi ve kaynak daraltmayı etkinleştirin. R8/ProGuard adımının çalışması ç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 derlemede, gerçekten kullandığınız diller içinresConfigs
ayarını yapın. Varsayılan olarak Gradle, Gezinme SDK'sı 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 Navigasyon SDK'sının sürümü bu belgenin biraz ilerisinde veya gerisinde olabileceğinden, güncellenmiş bağımlılık kümeleri için örnek uygulamalara göz atın.
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, uygulamanızın güvenli bir şekilde başvuruda bulunabilmesi için API anahtarınızı nasıl depolayacağınız açıklanmaktadır. API anahtarınızı sürüm kontrol sisteminize kontrol etmemelisiniz. 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 özelliği dosyaları bölümüne bakın.
Bu görevi kolaylaştırmak için Android için Secrets Gradle Plugin'i kullanmanızı öneririz.
Google Haritalar projenize Android için Secrets Gradle Eklentisi'ni yüklemek için:
-
Android Studio'da üst düzey
build.gradle
veyabuild.gradle.kts
dosyanızı açın ve aşağıdaki kodubuildscript
altındakidependencies
öğ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") } }
-
Modül düzeyindeki
build.gradle
dosyanızı açın ve aşağıdaki koduplugins
öğesine ekleyin.Modern
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- Modül düzeyindeki
build.gradle
dosyanızdatargetSdk
vecompileSdk
öğelerinin 34 olarak ayarlandığından emin olun. - Dosyayı kaydedin ve projenizi Gradle ile senkronize edin.
-
Üst düzey dizininizde
secrets.properties
dosyasını açın, ardından aşağıdaki kodu ekleyin.YOUR_API_KEY
öğesini API anahtarınızla değiştirin.secrets.properties
, sürüm kontrol sistemine kontrol edilemiyor. Bu nedenle anahtarınızı bu dosyada saklayın.MAPS_API_KEY=YOUR_API_KEY
- Dosyayı kaydedin.
-
local.defaults.properties
dosyasını üst düzey dizininizde,secrets.properties
dosyasıyla aynı klasörde olacak şekilde 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ı için yedek konum 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 görülebilir. - Dosyayı kaydedin.
-
AndroidManifest.xml
dosyanızdacom.google.android.geo.API_KEY
bölümüne gidipandroid:value attribute
değerini güncelleyin.<meta-data>
etiketi yoksa bunu<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 namecom.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. -
In Android Studio, open your module-level
build.gradle
orbuild.gradle.kts
file and edit thesecrets
property. If thesecrets
property does not exist, add it.Edit the properties of the plugin to set
propertiesFileName
tosecrets.properties
, setdefaultPropertiesFileName
tolocal.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.*" }
Gerekli ilişkilendirmeleri uygulamanıza dahil edin
Uygulamanızda Android için Gezinme 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 ilişkilendirme metnini ve açık kaynak lisanslarını Android için Gezinme SDK'sı zip dosyasında bulabilirsiniz:
NOTICE.txt
LICENSES.txt
Aksi belirtilmediği sürece bu sayfanın içeriği Creative Commons Atıf 4.0 Lisansı altında ve kod örnekleri Apache 2.0 Lisansı altında lisanslanmıştır. Ayrıntılı bilgi için Google Developers Site Politikaları'na göz atın. Java, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2024-03-15 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"İhtiyacım olan bilgiler yok" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Çok karmaşık / çok fazla adım var" },{ "type": "thumb-down", "id": "outOfDate", "label":"Güncel değil" },{ "type": "thumb-down", "id": "translationIssue", "label":"Çeviri sorunu" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Örnek veya kod sorunu" },{ "type": "thumb-down", "id": "otherDown", "label":"Diğer" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Anlaması kolay" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Sorunumu çözdü" },{ "type": "thumb-up", "id": "otherUp", "label":"Diğer" }]