以前の Google Maps Mobile SDK for Work:Android

以前の Google Maps APIs for Work または Google Maps API for Business ライセンスを所有している方は、Google Maps Android API を Google Maps Mobile SDK for Work として購入済みです。

本ドキュメントのこのセクションでは、この SDK をセットアップする方法について説明します。

このページは、以前の Maps APIs for Work または Maps API for Business ライセンスのユーザーのみを対象にしています。このページの内容は、2016 年 1 月から利用可能になった新しい Google Maps APIs Premium Plan のユーザーには適用されません。

概要

このページに記載された手順に従って SDK をダウンロードし、プロジェクトをセットアップしてマップを追加します。 必要なステップの概要は次のとおりです。

  1. SDK をダウンロードします。
  2. SDK を新規または既存の Android プロジェクトに追加します。
  3. API キーをアプリのマニフェストに追加します。
  4. 必要な Android パーミッションと OpenGL ES バージョン 2 を指定します。
  5. マップを追加します。

SDK をダウンロードする

SDK を静的ライブラリとしてダウンロードするか、Android SDK Manager を使用できます。

オプション 1: SDK を静的ライブラリとしてダウンロードする

最新リリースを静的ライブラリとしてダウンロードします。

オプション 2: Android SDK Manager を使用して、SDK をダウンロードする

Android Studio で行う手順:

  1. [Tools] > [Android] > [SDK Manager] を選択します。
  2. [Appearance & Behavior] > [System Settings] > [Android SDK] を選択します。
  3. [SDK Update Sites] タブをクリックします。
  4. プラス記号(+)アイコンをクリックして、新しいサイトを追加します。
  5. "Google Maps APIs" などの名前と URL https://dl.google.com/geosdk/android-m4b-addon.xml を入力します。
  6. [OK] をクリックします。
  7. [SDK Tools*] タブをクリックします。
  8. [Google Maps Mobile SDK for Work] を選択して、[OK] をクリックし、ダウンロードを完了します。

Android Studio によって、ライブラリが <android-sdk-folder>/extras/google/maps_for_business_sdk/ にインストールされます。

Android SDK Manager をスタンドアロン ツールとして使用する手順については、Android SDK Manager のガイドをご覧ください。

SDK をプロジェクトに追加する

Android Studio で行う手順を以下に示します。 別のツールを使用している場合は、Android ドキュメントに記載されているコマンドラインの使用方法の手順をご覧ください。

Google Maps Mobile SDK for Work の Google Maps Android API は、 aar バンドル(google-maps-sdk-m4b.aar)とライブラリ モジュール(google-maps-sdk-m4b_lib)の 2 つの形式で入手できます。 最適な形式を選択してください。

オプション 1: aar バンドルから SDK をインポートする

次の手順を実行して、aar バンドル(google-maps-sdk-m4b.aar)を Android Studio プロジェクトに追加します。

  1. Google Maps Mobile SDK for Work がある以下の場所を参照します。

    <android-sdk>/extras/google/maps_for_business_sdk

  2. google-maps-sdk-m4b.aar ファイルをプロジェクトの libs ディレクトリにコピーします (このディレクトリが存在しない場合、ディレクトリを作成してください)。

  3. 次のコードを build.gradle ファイルに追加します。

    dependencies {
        compile(name:'google-maps-sdk-m4b', ext:'aar')
    
    }
    
    repositories {
        flatDir{
            dirs 'libs'
        }
    }
    
  4. 以下で説明する設定手順を実行します。

オプション 2: SDK をライブラリ モジュールとしてインポートする

aar ファイルを使用する代わりに、次の手順を実行して、SDK ライブラリ モジュール(google-maps-sdk-m4b_lib)を Android Studio の既存のプロジェクトに追加できます。

  1. Android Studio で、新しいモジュールをインポートするためのオプションを選択します([File] -> [New] -> [Import Module])。

  2. SDK がある以下の場所を参照します。

    <android-sdk>/extras/google/maps_for_business_sdk

  3. google-maps-sdk-m4b_lib ディレクトリを選択して、[Choose] をクリックします。

  4. インポート ウィザードでデフォルト値を受け入れます。
  5. [Finish] をクリックします。 インポート プロセスの結果をまとめたテキスト ファイルが表示されます。

  6. ライブラリが settings.gradle ファイルに含まれていることを確認します。

    include ':googlemapssdkm4b_lib'

  7. モジュールの依存関係をアプリの build.gradle ファイルに追加します。

    compile project(':googlemapssdkm4b_lib')

Google Play サービスを使用する既存の設定を変更する

  1. Google Play サービスを使用する既存のアプリがある場合、com.google.android.gms.maps パッケージへのすべての参照を com.google.android.m4b.maps に置き替えます。

  2. XML レイアウト属性へのすべての参照に接頭辞 m4b_ を付けます。 次に例を示します。 m4b_mapTypem4b_cameraZoom

API キーを取得してアプリに追加する

以下で説明するように、プロジェクトの API キーを生成して、AndroidManifest.xml にそのキーを追加します。 Android 限定の API キーをセットアップする必要があります。

この API キーによって、Google Maps Mobile SDK for Work ユーザーとして特定され、アプリのサポートや購入済み割り当てが可能になります。 アプリのパッケージ名とそのデジタル証明書の組み合わせを使用して Google Maps Mobile SDK サービスを有効にしているアカウントで API キーを生成できます。

API キーは、アプリのデジタル証明書の簡略形をベースにしています。 すべての Android アプリは、秘密キーを保持するデジタル証明書を使用して署名されます (デジタル証明書の詳細については、Androidガイドでアプリケーションに署名する方法をご覧ください)。

アプリの証明書情報を表示する

Android API キーの制限は、SHA-1 フィンガープリントとも呼ばれる、アプリのデジタル証明書の簡略形をベースにしています。

Android Studio から証明書情報を取得する

Google Maps Android API のスタートガイドに従って操作を行うと、Android Studio でアプリの認証情報を利用して簡単な google_maps_api.xml ファイルが作成されます。

次のいずれかの方法を選択して、Android Studio で API キーを取得します。

  • 速くて簡単な方法: Android Studio によって作成された google_maps_api.xml ファイルに含まれるリンクを使用します。
    1. google_maps_api.xml ファイルにあるリンクをコピーして、ブラウザに貼り付けます。このリンクを使用すると、Google API Console が開き、URL パラメータによって必要な情報が Google API Console に入力されるため、ユーザーが手動で入力しなければならない項目が少なくなります。
    2. Google API Console で新しいプロジェクトを作成する手順に従うか、既存のプロジェクトを選択します。
    3. プロジェクト用に Android 限定の API キーを作成します。
    4. 生成された API キーをコピーし、Android Studio に戻って、その API キーを google_maps_api.xml ファイルの <string> 要素内に貼り付けます。
  • やや速い方法: Android Studio によって作成された google_maps_api.xml ファイルに含まれる認証情報を使用します。
    1. google_maps_api.xml ファイルにある認証情報をコピーします。
    2. ご使用のブラウザで、 Google API Consoleを開きます。
    3. コピーした認証情報を使用して、既存の API キーにアプリを追加するか、新しい API キーを作成します。

証明書情報を自分で取得する

アプリの作成時にスタートガイドに従わなかった場合は、証明書の SHA-1 フィンガープリントを自分で取得する必要があります。最初に、正しい証明書を使用していることを確認してください。次の 2 種類の証明書がある場合があります。

  • デバッグ用証明書:この証明書は、デバッグビルドを行う際に Android SDK ツールによって自動的に生成されます。この証明書は、テストしているアプリでのみ使用してください。デバッグ用証明書で署名されたアプリを公開しないでください。デバッグ用証明書の詳細については、Android デベロッパー ドキュメントのデバッグモードで署名するをご覧ください。
  • リリース用証明書:この証明書は、リリースビルドを行う際に Android SDK ツールによって生成されます。keytool プログラムを使用してこの証明書を生成することもできます。この証明書を使用するのは、アプリを世界にリリースできる準備が整ってからにしてください。

-v パラメータを指定した keytool プログラムを使用して、証明書の SHA-1 フィンガープリントを表示するには、次のステップに従います。Keytool の詳細については、Oracle のドキュメントをご覧ください。

デバッグ用証明書

デバッグ用証明書のフィンガープリントを表示する

  1. デバッグ用のキーストア ファイルを見つけます。ファイル名は debug.keystore で、プロジェクトを初めてビルドするときに作成されます。デフォルトでは、Android Virtual Device (AVD) ファイルと同じディレクトリに保存されます。

    • macOS と Linux: ~/.android/
    • Windows Vista および Windows 7: C:\Users\your_user_name\.android\
  2. SHA-1 フィンガープリントを一覧表示します。

    • Linux や macOS の場合は、ターミナル ウィンドウを開いて次のコマンドを入力します。

      keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    • Windows Vista と Windows 7 の場合は、次を実行します。

      keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

次のような出力が表示されます。

Alias name: androiddebugkey
Creation date: Jan 01, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
     MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
     SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
     Signature algorithm name: SHA1withRSA
     Version: 3
リリース用証明書

リリース用証明書のフィンガープリントを表示する

  1. リリース証明書用のキーストア ファイルを見つけます。リリース用キーストアには、デフォルトの保存場所や名前はありません。リリース用アプリのビルド時に指定しない場合は、.apk が未署名のままになり、公開前に署名が必要になります。リリース用証明書の場合、証明書のエイリアスと、キーストアと証明書のパスワードも必要です。次を入力すると、キーストア内のすべてのキーのエイリアスを一覧表示できます。

    keytool -list -keystore your_keystore_name

    your_keystore_name を、完全修飾パスとキーストアの名前(.keystore 拡張子を含む)に置き換えます。キーストアのパスワードが要求されます。次に、keytool によってキーストア内のすべてのエイリアスが表示されます。

  2. ターミナルやコマンド プロンプトで次を入力します。

    keytool -list -v -keystore your_keystore_name -alias your_alias_name

    your_keystore_name を、完全修飾パスとキーストアの名前(.keystore 拡張子を含む)に置き換えます。your_alias_name を、証明書の作成時に割り当てたエイリアスに置き換えます。

次のような出力が表示されます。

Alias name: <alias_name>
Creation date: Feb 02, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4cc9b300
Valid from: Mon Feb 02 08:01:04 UTC 2013 until: Mon Feb 02 18:05:04 PST 2033
Certificate fingerprints:
    MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6B:AC:F9
    SHA1: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:90:AF:A1:66:6E:44:5D:75
    Signature algorithm name: SHA1withRSA
    Version: 3

SHA1 で始まる行に、証明書の SHA-1 フィンガープリントが含まれています。フィンガープリントは、コロンで区切られた 2 桁の 16 進数 20 個からなるシーケンスです。

デジタル証明書の詳細については、Android ガイドでアプリに署名する方法をご覧ください。

アカウントが

Google Maps Mobile SDK サービスに対して有効になっていることを確認する

Google Cloud Support チームは、Google Maps Mobile SDK for Work のサインアップ時に Google Maps Mobile SDK サービスを有効にします。

サービスが新しいプロジェクトで有効になります。 その後、 Google API Console から API キーを取得します。

注: Google Maps Mobile SDK サービスが表示されるのは、プロジェクトの最初の所有者のみです。 プロジェクト所有者の追加承認をリクエストするには、Google Cloud Support Portal に技術以外のケースを提出します。

以下の手順に従って、アカウントが有効になっていることを確認します。

  1. Google API Console にアクセスし、Google アカウントでログインします。
  2. Google Maps Mobile SDK for Work を注文したときに作成された [Google Maps Mobile SDK for Work] プロジェクトを選択します。 プロジェクト名は、Google Maps APIs for Business or Google Maps for Work or Google Maps から始まります。 まだ SDK へのアクセスを購入していない場合は、[営業にお問い合わせ]ください。

  3. [Dashboard] の [APIs] のリストで、 Google Maps Mobile SDK* が有効になっていることを確認します。

Google API Console から API キーを取得する

プロジェクトに対して Google Maps Mobile SDK for Work サービスが有効になったら、新しいキーを生成する必要があります。

  1. Google API Console の [Credential] ページに移動し、Google アカウントでログインします。

  2. Google Maps Mobile SDK for Work を注文したときに作成された [Google Maps Mobile SDK for Work] プロジェクトを選択します。 プロジェクト名は、Google Maps APIs for Business or Google Maps for Work or Google Maps から始まります。 まだ SDK へのアクセスを購入していない場合は、[営業にお問い合わせ]ください。

  3. [API keys] のリストから、Android 限定のキーを見つけます。

  4. まだプロジェクトに Android 限定の API キーがない場合は、[Create credentials] > [API key] を選択してすぐに作成します。

  5. 表示されるダイアログで、[Restrict key] を選択します。

  6. [Restrictions] セクションで、[Android apps] を選択し、アプリの SHA-1 フィンガープリントとパッケージ名を入力します。 次に例を示します。

    BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
    com.example.android.mapexample
    
  7. [Save] をクリックします。

    プロジェクトの API キーのリストに、新しい Android 限定の API キーが表示されます。 API キーは次のような文字列です。

    AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0
    

アプリケーションに API キーを追加する

AndroidManifest.xml ファイルに含まれるアプリケーションのマニフェストに API キーを含めるには、次のステップに従います。

  1. AndroidManifest.xml に、次の要素を <application> 要素の子要素として追加します。終了タグ </application> の直前に挿入します。
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="YOUR_API_KEY"/>
        

    value 属性の YOUR_API_KEY は、ユーザーの API キーに置き換えてください。この要素により、com.google.android.geo.API_KEY キーがユーザーの API キーの値に設定されます。

  2. AndroidManifest.xml を保存してアプリケーションを再度ビルドします。

注: 上記のように、com.google.android.geo.API_KEY は、API キーの推奨されるメタデータ名です。この名前のキーは、Android プラットフォームで複数の Google マップベースの API(Google Maps Android API など)を認証するのに使用できます。下位互換性のために、API は、com.google.android.maps.v2.API_KEY という名前もサポートしています。このレガシー名は、Android Maps API v2 の認証にのみ使用できます。アプリケーションが指定できる API キーのメタデータ名は 1 つのみです。両方を指定すると、API から例外がスローされます。

アプリのパーミッションを指定する

アプリケーションに必要なパーミッションを指定します。このためには、AndroidManifest.xml で、<manifest> 要素の子要素として <uses-permission> 要素を追加します。

位置パーミッション

現在地レイヤーを有効にすることでアプリケーションがユーザーの現在地にアクセスする場合は、位置データに関する説明に従って、位置パーミッションをリクエストする必要があります。

外部ストレージ パーミッション

バージョン 8.3 以降の Google Play サービス SDK が対象の場合は、WRITE_EXTERNAL_STORAGE パーミッションがなくても Google Maps Android API を使用できるようになりました。

それより前のバージョンの Google Play サービス SDK が対象の場合は、android.permission.WRITE_EXTERNAL_STORAGE パーミッションをリクエストする必要があります。

<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

注: アプリが API レベル 23(Android 6.0)を対象としている場合、このレベルでは実行時パーミッションを使用する必要があるため、バージョン 8.3 以降の Google Play サービス SDK を対象にする必要があります

パーミッションはマニフェストに自動的に結合される

次のパーミッションは、Google Play サービスのマニフェストで定義されているもので、ビルド時に自動的にアプリのマニフェストに結合されます。これらを明示的にマニフェストに追加する必要はありません

  • android.permission.INTERNET - Google マップサーバーからマップタイルをダウンロードするために API によって使用されます。
  • android.permission.ACCESS_NETWORK_STATE - データをダウンロードできるかどうかを判別するために、API が接続ステータスをチェックできるようにします。

OpenGL ES バージョン 2 を指定する

Google Maps Android API は、OpenGL ES バージョン 2 を使用してマップをレンダリングします。次の設定は、Google Play サービスのマニフェストで定義されており、ビルド時に自動的にアプリのマニフェストに統合されます。この設定を明示的にマニフェストに追加する必要はありません。

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

これにより、外部サービスに要件が通知されます。具体的には、OpenGL ES バージョン 2 をサポートしていない端末では、Google Play ストアにそのアプリが表示されなくなります。

マップの追加

アプリが適切に設定されているかどうかをテストする最も簡単な方法は、シンプルなマップを追加することです。

注: 以下のコードは本稼働用のアプリに使用しないでください。

  1. activity_main.xml に、次のフラグメントを追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:name="com.google.android.m4b.maps.MapFragment"/>
    
  2. MainActivity.java に、次のコードを追加します。

    package com.example.mapdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

アプリをビルドして実行する

アプリをビルドして実行すると、 マップが表示されるはずです。

トラブルシューティング:

  • マップが表示されない場合は、このドキュメントの上記のすべての手順を完了していることを確認してください。 特に、正しい API キーを使用していることに加え、Google Maps Mobile SDK for Work サービスに対してアカウントが有効になっていることを確認してください。

  • プロジェクトのメソッド数が制限を超えていると、次のエラーが表示されることがあります。

    Unable to execute dex: method ID not in [0, 0xffff]: 65536

    原因とソリューションの詳細については、Android デベロッパー ガイドの 65K を超えるメソッドを使用するアプリのビルドをご覧ください。

  • プロジェクトで Guava を既に使用している場合、次のようなクラス競合エラーが表示されることがあります。

    com.android.dex.DexException:Multiple dex files define Lcom/google/common/annotations/Beta

    この問題を解決するには、google-maps-sdk-m4b_lib/libs ディレクトリから Guava のコピーを削除します。

詳細

既存のアプリを移行する方法

Google Maps Mobile SDK for Work で利用可能な Android API は、標準の Google Maps Android API とほぼ同じように動作するように設計されています。

そのため、移行プロセスは簡単です。

  1. Google Maps Mobile SDK for Work の Google Maps Android API をダウンロードし、上述の方法で SDK をプロジェクトに追加します。

  2. com.google.android.gms.maps パッケージへのすべての参照を com.google.android.m4b.maps に置き替えます。

  3. XML レイアウト属性へのすべての参照に接頭辞 m4b_ を付けます。 次に例を示します。 m4b_mapTypem4b_cameraZoom

  4. 認証ガイドで説明しているように、プロジェクトの新しい API キーを生成して、AndroidManifest.xml にそのキーを追加します。

  5. アプリをビルドします。

バージョンの比較

次の表は、標準の Google Maps Android API を使用する場合と、Premium Plan で API を使用する場合の主な違いを示しています。

  標準の Google Maps Android API Google Maps Mobile SDK for Work
パッケージ名 com.google.android.gms.maps com.google.android.m4b.maps
レイアウト ファイル内の XML 属性 接頭辞なしの属性名を使用します。 次に例を示します。 mapType すべての属性名に接頭辞 m4b_ を付けます。 次に例を示します。 m4b_mapType。 詳細については、XML 属性に関するドキュメントをご覧ください。
ダウンロードの場所 GooglePlay サービスに含まれています。 静的ライブラリとして入手できます。
サポート チャンネル コミュニティベースのサポート プレミアム サポートの利用
利用規約 Google Maps APIs 利用規約の対象となります Google Maps Mobile SDK for Work 利用規約の対象となります。

Google Play サービス

標準の Google Maps Android API には、Google Play サービス APK と Google Play サービス クライアント ライブラリの両方が必要です。 ただし、Google Maps Mobile SDK for Work で SDK を使用する場合は、Google Play サービス APK だけをターゲット端末にインストールしていれば、クライアント ライブラリは必要ありません。

アプリを Google Maps Mobile SDK for Work に移行する場合、プロジェクトから Google Play サービス SDK を削除する必要はありません。

ただし、com.google.android.gms.maps パッケージへの参照を削除する必要があります。 Google Play サービスには、任意のバージョンの Google Maps Android API とその他の Google サービスが含まれています。 アプリ内で Play サービスを利用して、他の Google API を使用する場合は、Google Maps Mobile SDK for Work SDK(com.google.android.m4b.maps パッケージ)のみを使用してマップにアクセスする必要があります。

Google Play サービス クライアント ライブラリは必須ではありませんが、このクライアント ライブラリを含めると、Google+ や Location API などの他の Google API を活用できます。

サンプルコード

GitHub の Google マップ リポジトリには、Android アプリでの Google Maps Android API の使用方法を示すいくつかのサンプルがあります。

サンプルアプリでは、Google Maps Mobile SDK for Work で使用する com.google.android.m4b.maps ではなく、com.google.android.gms.maps パッケージを使用していることに注意してください。

また、サンプルアプリでは、デモの一部に Location API を使用しているため、Google Play サービス SDK が必要です。

デベロッパー ガイドの各ページにはコード スニペットも用意されています。

ドキュメント

に関する主な情報ソースは、Google のサイト上の他のページで公開されているデベロッパー ガイドとリファレンス ドキュメントです。Google Maps Mobile SDK for Work