Project Configuration

このガイドでは、Navigation SDK for Android を使用するためのビルド構成の要件について説明します。以下の手順は、Android IDE がインストールされており、Android 開発に精通していることを前提としています。

Navigation SDK を使用するための最小要件

  • Navigation SDK を有効にした Google Cloud Console プロジェクト。プロビジョニングについては、Google Maps Platform の担当者にお問い合わせください。

  • アプリは Navigation SDK(バージョン 16)以降をターゲットにする必要があります。

  • Navigation SDK でビルドしたアプリを実行するには、Android デバイスに Google Play 開発者サービスがインストールされ、有効になっている必要があります。

  • 帰属表示とライセンス テキストをアプリに追加する必要があります。

プロジェクトを設定する: Google Cloud コンソール プロジェクトと Android プロジェクト

アプリを構築またはテストする前に、Cloud コンソール プロジェクトを作成し、API キーの認証情報を追加する必要があります。Navigation SDK にアクセスするためのプロビジョニングがプロジェクトに必要です。Cloud Console プロジェクト内のすべての鍵には、Navigation SDK に対する同じアクセス権が付与されます。1 つのキーに複数の開発プロジェクトを関連付けることができます。コンソール プロジェクトがすでにある場合は、現在のプロジェクトに鍵を追加できます。

セットアップ方法

  1. Chrome などのお気に入りのウェブブラウザで、Google Cloud コンソールにログインして Google Cloud コンソール プロジェクトを作成します。
  2. Android Studio などの IDE で、Android アプリ開発プロジェクトを作成し、パッケージ名をメモします。
  3. Google Maps Platform の担当者にお問い合わせいただき、Google Cloud コンソール プロジェクト用の Navigation SDK にアクセスできるようにしてください。
  4. ウェブブラウザの Google Cloud コンソール ダッシュボードで、認証情報を作成して制限付きの API キーを生成します。
  5. [API キー] ページで、[*アプリケーションの制限] 領域の [Android アプリ] をクリックします。
  6. [パッケージ名とフィンガープリントを追加する] をクリックして、開発プロジェクトのパッケージ名と、その鍵の SHA-1 フィンガープリントを入力します。
  7. [保存] をクリックします。

アプリに Navigation SDK を追加する

Navigation SDK は Aar バンドルとして提供されています。開発プロジェクトを作成したら、SDK を統合できます。以下の手順は、IDE で Android Studio を使用することを想定しています。

  1. Navigation SDK の zip ファイルをダウンロードして解凍します。

  2. Android Studio でプロジェクトを開き、SDK Manager を使用して Google Play 開発者サービス パッケージを追加します。

  3. zip ファイル ディレクトリから、libs/google_navigation.aar をプロジェクトの app/libs ディレクトリにコピーします。

ビルドを構成する

プロジェクトを作成したら、ビルドを成功させるための設定を行い、Navigation SDK を使用できるようにします。

ローカル プロパティを更新する

  • Gradle Scripts フォルダで、local.properties ファイルを開き、android.useDeprecatedNdk=true を追加します。

Gradle ビルド スクリプトを更新する

  • build.gradle (Module:app) ファイルを開き、以下のガイドラインに沿って Navigation SDK の要件を満たす設定を更新し、最適化オプションの設定も検討します。

    Navigation SDK に必要な設定

    1. minSdkVersion を 16 以上に設定します。
    2. API 21 で「targetSDKversion」を設定すると、権限の処理が API に移行されます。 以前のバージョンでは、アプリに権限フローを明示的に含める必要があります。
    3. javaMaxHeapSize を増やす dexOptions 設定を追加します。
    4. 追加のライブラリの場所を設定します。
    5. Navigation SDK の repositoriesdependencies を追加します。
    6. 依存関係のバージョン番号を最新の利用可能なバージョンに置き換えます。

    ビルド時間を短縮するためのオプション設定

    • アプリのビルド時間を短縮する
    • 依存関係の使用を最適化するには、ProGuardリソース圧縮を有効にします。Proguard は、未使用のコードとリソースを依存関係から削除します。ProGuard ステップの実行時間が長すぎる場合は、開発作業用に Multidex を有効にすることを検討してください。
    • ビルドに含まれる言語翻訳の数を減らします。開発中に 1 つの言語に対して resConfigs を設定します。最終的なビルドでは、実際に使用する言語に対して「resConfigs」を設定します。デフォルトでは、Gradle には Navigation SDK でサポートされているすべての言語のリソース文字列が含まれています。

以下に、このアプリケーションの Gradle ビルド スクリプトの例を示します。

  
  apply plugin: 'com.android.application'

  ext {
      supportVersion = "27.1.1"
      lifecycle_version = "1.1.1"
  }

  android {
      compileSdkVersion 27
      buildToolsVersion '28.0.3'

      defaultConfig {
          applicationId "com.example.navigationapidemo"
          minSdkVersion 16
          targetSdkVersion 27
          versionCode 1
          versionName "1.0"
          resConfigs "en"
      }

      dexOptions {
          // This increases the amount of memory available to the dexer. This is
          // required to build apps using the Navigation SDK.
          javaMaxHeapSize "4g"
      }
      buildTypes {
          all {
              minifyEnabled true
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
  }

  // Specify where to find additional libraries and the location of google_navigation.aar file.
  repositories {
      flatDir {
          dirs 'libs'
      }
      google()
  }
  dependencies {
      api fileTree(include: ['*.jar'], dir: 'libs')

      // Include the Google Navigation API library
      api(name: 'google_navigation', ext: 'aar')

      // These dependencies are required for the Navigation API to function
      // properly at runtime.
      api "org.chromium.net:cronet-fallback:69.3497.100"
      // Optional for Cronet users:
      // api "org.chromium.net:cronet-api:69.3497.100"
      api "com.android.support:appcompat-v7:${supportVersion}"
      api "com.android.support:cardview-v7:${supportVersion}"
      api "com.android.support:design:${supportVersion}"
      api "com.android.support:mediarouter-v7:${supportVersion}"
      api "com.android.support:preference-v7:${supportVersion}"
      api "com.android.support:recyclerview-v7:${supportVersion}"
      api 'com.github.bumptech.glide:glide:4.9.0'
      api 'com.github.bumptech.glide:okhttp-integration:4.9.0'
      api "android.arch.lifecycle:common-java8:$lifecycle_version"
      api 'com.google.android.datatransport:transport-api:2.2.0'
      api 'com.google.android.datatransport:transport-backend-cct:2.2.0'
      api 'com.google.android.datatransport:transport-runtime:2.2.0'
      api 'joda-time:joda-time:2.9.9'

      // The Navigation SDK does not require the
      // Places API; however, the demo app for does.
      api 'com.google.android.gms:play-services-places:10.2.1'

      annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
  }

アプリのマニフェストを更新する

  1. マニフェスト フォルダAndroidManifest.xml ファイルを開きます。

  2. <application> 要素内に API キーを追加します。上記のステップで説明した Google Cloud Console プロジェクトで定義された API キーを使用する必要があります。

    この例に示されている部分的なマニフェストでは、YOUR_API_KEY を独自の API キーに置き換えます。

          <meta-data
              android:name="com.google.android.geo.API_KEY"
              android:value="YOUR_API_KEY"/>
    

    以下のマニフェスト全体は、API キーの設定と、起動時に実行される MainActivity の空の intent を示しています。

    
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.navigationapidemo" >
    
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:supportsRtl="true"
              android:theme="@style/_AppTheme" >
    
              <meta-data
                  android:name="com.google.android.geo.API_KEY"
                  android:value="YOUR_API_KEY"/>
    
              <activity android:name=".MainActivity" >
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
        </manifest>
    
        ```
    

必要な帰属表示をアプリに含める

アプリで Navigation SDK for Android を使用する場合は、アプリの法的通知セクションにアトリビューション テキストとオープンソース ライセンスを含める必要があります。

必要な帰属表示テキストとオープンソース ライセンスは、Navigation SDK for Android の zip ファイルで確認できます。

  • NOTICE.txt
  • LICENSES.txt

次のステップ

詳しくは、ルートを描画する方法をご覧ください。