このページでは、Navigation SDK を開発プロジェクトに統合する方法について説明します。
プロジェクトに Navigation SDK を追加する
Navigation SDK は Google
Maven
Repository から入手できます。
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 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に次の行を追加します。<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 ビルド スクリプトを更新する
build.gradle (Module:app)ファイルを開き、次のガイドラインに沿って設定を更新し、Navigation SDK の要件を満たします。また、最適化オプションの設定も検討してください。Navigation SDK に必要な設定
minSdkVersionを 24 以上に設定します。targetSdkVersionを 36 以上に設定します。javaMaxHeapSizeを増やすdexOptions設定を追加します。- 追加のライブラリの場所を設定します。
- Navigation SDK の
repositoriesとdependenciesを追加します。 - 依存関係のバージョン番号を、利用可能な最新バージョンに置き換えます。
ビルド時間を短縮するためのオプション設定
- コード圧縮と不要なリソースの削除 を有効にし、R8/ProGuard を使用して依存関係から未使用のコードとリソースを削除します。R8/ProGuard のステップの実行に時間がかかりすぎる場合は、開発作業で multidexを有効にすることを検討してください。
- ビルドに含まれる言語翻訳の数を減らします。開発中に 1 つの言語の
resConfigsを設定します。最終ビルドでは、実際に使用する言語のresConfigsを設定します。デフォルトでは、Gradle には Navigation SDK でサポートされているすべての言語のリソース文字列が含まれます。
Java8 サポートの脱糖を追加する
- Android Gradle プラグイン 4.0.0 以上を使用してアプリをビルドする場合、このプラグインは、多数の Java 8 言語 API の使用をサポートします。詳細については、Java 8 の desugar サポート をご覧ください。コンパイル オプションと依存関係オプションについては、以下のビルド スクリプト スニペットの例をご覧ください。
- Android バージョン 7.3.0 以降では、Gradle 8.11.1、Android Gradle プラグイン バージョン 8.10.0、Desugar ライブラリ
com.android.tools:desugar_jdk_libs_nio:2.0.3を使用する必要があります。 - 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 プラグインをインストールして API キーを保存する手順は次のとおりです。
-
Android Studio でルートレベルの
build.gradleファイルを開き、dependencies要素をbuildscriptの配下に追加します。Groovy
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") } }
-
アプリレベルの
build.gradleファイルを開き、次のコードをplugins要素に追加します。Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
- Android Studio を使用している場合は、プロジェクトを Gradle と同期します。
-
プロジェクト レベルのディレクトリで
local.propertiesを開き、次のコードを追加します。YOUR_API_KEYは API キーに置き換えます。MAPS_API_KEY=YOUR_API_KEY
-
API キーを
AndroidManifest.xmlファイルに追加するか、プログラムで API キーを指定します。- API キーを
AndroidManifest.xmlに追加します。<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 から例外がスローされます。 - プログラムで API キーを指定します。
Secrets Gradle プラグインにより、
BuildConfigクラスでキーを使用できるようになります。 アプリの初期化(たとえば、Application.onCreate()メソッド)で、 次のようにメソッドを呼び出します。Kotlin
- 次の import ステートメントを追加します。
import com.google.android.libraries.navigation.NavigationApi
Application.onCreate()メソッドに以下を追加します。NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
Java
- 次の import ステートメントを追加します。
import com.google.android.libraries.navigation.NavigationApi;
Application.onCreate()メソッドに以下を追加します。NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
注:setApiKey()を使用する場合は、次の点に注意してください。- null ではなく、空ではない API キーを指定します。
- アプリのライフサイクル中に
setApiKey()を 1 回だけ呼び出します。複数回呼び出すと、メソッドはIllegalStateExceptionをスローします。 Navigatorなど、他の Navigation SDK コンポーネントを初期化する前にsetApiKey()を呼び出します。- このメソッドで指定したキーは、
AndroidManifest.xml内の API キーをオーバーライドします。 - Navigation SDK バージョン 7.6 以降を使用します。
- 次の import ステートメントを追加します。
- API キーを
必要な帰属表示をアプリに含める
アプリで Navigation SDK for Android を使用する場合は、アプリの法的通知のセクションに帰属表示テキストとオープンソース ライセンスを含める必要があります。
必要な帰属表示テキストとオープンソース ライセンスは、Navigation SDK for Android の ZIP ファイルにあります。
NOTICE.txtLICENSES.txt
モビリティまたは Fleet Engine Deliveries をご利用のお客様
モビリティまたは Fleet Engine Deliveries をご利用のお客様は、 モビリティのドキュメントで課金についてご確認ください。トランザクションの記録について詳しくは、課金を設定する、課金対象のトランザクションを記録する、レポート、課金対象のトランザクションを記録する(Android)をご覧ください。