このページでは、Navigation SDK を開発プロジェクトに統合する方法について説明します。
プロジェクトに Navigation SDK を追加する
Navigation SDK は Google Maven リポジトリから入手できます。Gradle build.gradle
または Maven pom.xml
の構成を使用して、SDK をプロジェクトに追加できます。
次の依存関係を Gradle または Maven の構成に追加します。
VERSION_NUMBER
プレースホルダは、必要なバージョンの Navigation SDK for Android に置き換えます。Gradle
モジュール レベルの
build.gradle
に次の行を追加します。dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }
Maven
pom.xml
に次の行を追加します。<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>
Maps SDK を使用する依存関係がある場合は、Maps SDK に依存する宣言された各依存関係で依存関係を除外する必要があります。
Gradle
最上位の
build.gradle
に以下を追加します。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
に次の行を追加します。<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>
ビルドを構成する
プロジェクトを作成したら、Navigation SDK を正常にビルドして使用するための設定を構成できます。
ローカル プロパティを更新する
- Gradle Scripts フォルダで
local.properties
ファイルを開き、android.useDeprecatedNdk=true
を追加します。
Gradle プロパティを更新する
Gradle Scripts フォルダで
gradle.properties
ファイルを開き、まだ存在しない場合は次を追加します。android.useAndroidX=true
android.enableJetifier=true
Gradle ビルド スクリプトを更新する
build.gradle (Module:app)
ファイルを開き、次のガイドラインに沿って設定を更新して Navigation SDK の要件を満たし、最適化オプションの設定も検討します。Navigation SDK に必要な設定
minSdkVersion
を 23 以上に設定します。targetSdkVersion
を 34 以上に設定します。javaMaxHeapSize
を増やすdexOptions
設定を追加します。- 追加ライブラリの場所を設定します。
- Navigation SDK の
repositories
とdependencies
を追加します。 - 依存関係のバージョン番号を、利用可能な最新バージョンに置き換えます。
ビルド時間を短縮するためのオプションの設定
- R8/ProGuard を使用してコード圧縮とリソース圧縮を有効にし、依存関係から未使用のコードとリソースを削除します。R8/ProGuard のステップの実行に時間がかかりすぎる場合は、開発作業で マルチデックスを有効にすることを検討してください。
- ビルドに含める言語翻訳の数を減らす: 開発中に 1 つの言語に
resConfigs
を設定します。最終ビルドでは、実際に使用する言語にresConfigs
を設定します。デフォルトでは、Gradle には Navigation SDK でサポートされているすべての言語のリソース文字列が含まれています。
Java8 サポートの脱糖を追加
- Android Gradle プラグイン 4.0.0 以上を使用してアプリをビルドする場合、このプラグインは、多数の Java 8 言語 API のサポートを拡張します。詳細については、Java 8 の脱糖化のサポートをご覧ください。コンパイル オプションと依存関係オプションについては、以下のビルド スクリプト スニペットの例をご覧ください。
- Gradle 8.4、Android Gradle プラグイン バージョン 8.3.0、Desugar ライブラリ
com.android.tools:desugar_jdk_libs_nio:2.0.3
を使用することをおすすめします。この設定は、Android 向け Navigation SDK バージョン 6.0.0 以降に対応しています。 - Desugar ライブラリは、
app
モジュールと、Navigation SDK に直接依存するモジュールで有効にする必要があります。
以下に、アプリの Gradle ビルド スクリプトの例を示します。使用している Navigation SDK のバージョンがこのドキュメントのバージョンより若干前後している可能性があるため、サンプルアプリで最新の依存関係を確認してください。
apply plugin: 'com.android.application'
ext {
navSdk = "__NAVSDK_VERSION__"
}
android {
compileSdk 33
buildToolsVersion='28.0.3'
defaultConfig {
applicationId "<your id>"
// Navigation SDK supports SDK 23 and later.
minSdkVersion 23
targetSdkVersion 34
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 {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
// Navigation SDK for Android and other libraries are hosted on Google's Maven repository.
google()
}
dependencies {
// Include the Google Navigation SDK.
// Note: remember to exclude Google Play service Maps SDK from your transitive
// dependencies to avoid duplicate copies of the Google Maps SDK.
api "com.google.android.libraries.navigation:navigation:${navSdk}"
// Declare other dependencies for your app here.
annotationProcessor "androidx.annotation:annotation:1.7.0"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
}
アプリに API キーを追加する
このセクションでは、アプリで安全に参照されるように API キーを保存する方法を説明します。API キーは、バージョン管理システムにはチェックインせず、プロジェクトのルート ディレクトリにある secrets.properties
ファイルに保存することをおすすめします。secrets.properties
ファイルについて詳しくは、Gradle プロパティ ファイルをご覧ください。
このタスクを効率化するには、Android 用 Secrets Gradle プラグインの使用をおすすめします。
Android 用 Secrets Gradle プラグインを Google マップ プロジェクトにインストールする手順は以下のとおりです。
-
Android Studio で最上位レベルの
build.gradle.kts
ファイルかbuild.gradle
ファイルを開き、buildscript
の配下にあるdependencies
要素に次のコードを追加します。Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
Groovy
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
- モジュール レベルの
build.gradle.kts
ファイルかbuild.gradle
ファイルを開き、次のコードをplugins
要素に追加します。Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- モジュール レベルの
build.gradle.kts
ファイルかbuild.gradle
ファイルで、targetSdk
とcompileSdk
を 34 に設定します。 - ファイルを保存して、プロジェクトを Gradle と同期します。
-
最上位レベルのディレクトリで
secrets.properties
ファイルを開き、次のコードを追加します。YOUR_API_KEY
は実際の API キーに置き換えてください。secrets.properties
はバージョン管理システムにチェックインされないため、このファイルにキーを保存します。NAV_API_KEY=YOUR_API_KEY
- ファイルを保存します。
-
最上位レベルのディレクトリ(
secrets.properties
ファイルと同じフォルダ)にlocal.defaults.properties
ファイルを作成し、次のコードを追加します。NAV_API_KEY=DEFAULT_API_KEY
このファイルの目的は、
secrets.properties
ファイルがない場合に API キーのバックアップ場所を提供し、ビルドが失敗しないようにすることです。この状況は、secrets.properties
を省略したバージョン管理システムからアプリのクローンを作成し、API キーを提供するためにsecrets.properties
ファイルをまだローカルに作成していない場合に発生する可能性があります。 - ファイルを保存します。
-
AndroidManifest.xml
ファイルでcom.google.android.geo.API_KEY
に移動し、android:value attribute
を更新します。<meta-data>
タグがない場合は、<application>
タグの子として作成します。<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
注:
com.google.android.geo.API_KEY
は、API キーとして推奨されるメタデータ名です。この名前のキーは、Android プラットフォームで Google マップベースの複数の API(Navigation SDK for Android など)の認証に使用できます。下位互換性を確保するため、API ではcom.google.android.maps.v2.API_KEY
という名前もサポートされています。この従来の名前は、Android Maps API v2 の認証にのみ使用できます。アプリでは、API キーのメタデータ名を 1 つのみ指定できます。両方を指定すると、API から例外がスローされます。 -
Android Studio でモジュール レベルの
build.gradle.kts
ファイルかbuild.gradle
ファイルを開き、secrets
プロパティを編集します。secrets
プロパティがない場合は追加します。プラグインのプロパティを編集して
propertiesFileName
をsecrets.properties
に、defaultPropertiesFileName
をlocal.defaults.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.*" }
Groovy
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.*" }
アプリに必要な属性情報を含める
アプリで Navigation SDK for Android を使用する場合は、アプリの法的通知のセクションに帰属表示テキストとオープンソース ライセンスを組み込む必要があります。
必要な帰属情報テキストとオープンソース ライセンスは、Android 向け Navigation SDK の ZIP ファイルにあります。
NOTICE.txt
LICENSES.txt
モビリティ エンジンまたはフリート エンジンの配信をご利用の場合
Mobility または Fleet Engine Deliveries をご利用の場合は、Mobility のドキュメントで課金についてご確認ください。トランザクションの記録について詳しくは、課金システムを設定する、課金対象のトランザクションを記録する、レポート、課金対象のトランザクションを記録する(Android)をご覧ください。