Google Maps Android API覚え書き

Google Maps Android API v2でとりあえず地図が表示できるところまで試したので、(主に自分用の) メモとして作業手順を書いておきます。

前提バージョン

1. Android Studio上でプロジェクト作成

ここでは以下のように入力。

  • Application Name: SampleMapApp
  • Company Domain: example.org
  • Package name: org.example.samplemapapp
  • Target Android Devices: Phone and Tablet, Minimum SDK: API 15
  • Activity: Blank Activity
  • Activity Name: MainActivity
  • Layout Name: activity_main
  • Title: MainActivity
  • Menu Resource Name: menu_main


2. キーストア作成+アプリ鍵生成

Android Studioのプロジェクト画面上で、Build→Generate Signed APKを選択。

ここで、Key store path: の下のCreate new...を選択する。

New Key Storeのダイアログに、以下のように入力。

  • トップレベ
    • Key store path: C:\android\keystore\sample_keystore.jks
    • Password: <適当なパスワード>
  • Key
    • Alias: googlemaps_appkey
    • Password: <適当なパスワード>
  • Certificate
    • First and Last Name: Sample Name
    • Organization: Example
    • Country Code: JP

ここでOKを押すと、先ほどのGenerate Signed APKのダイアログにパラメータが入った状態になる。

Next→APK Destination Folderを適当に選んでFinish。

3. アプリケーション鍵のSHA1フィンガープリント出力

コマンドプロンプト上で以下のコマンドを実行して、SHA1フィンガープリントを取得する (Mac等の場合は適宜読み替え)。

> cd C:\android\keytool
> keytool -list -keystore sample_keystore.jks

出力結果 (抜粋)

キーストアには1エントリが含まれます

googlemaps_appkey,2015/05/10, PrivateKeyEntry,
証明書のフィンガプリント(SHA1): ***

4. Google Developer Console上でプロジェクト作成&APIキー取得

Webブラウザから、Google Developer Consoleに接続し、今回作るAndroidアプリに対応したプロジェクトを作成し、Google Maps Android API利用のためのAPIキーを取得する。

Google Developer Consoleから「プロジェクトを作成」を選択し、以下のように入力する。

  • プロジェクト名: SampleMapApp
  • プロジェクトID: デフォルトのまま

プロジェクト画面から、APIGoogle Maps Android API→「APIを有効にする」の順に選択する。

さらに、プロジェクト画面から、認証情報→「公開APIへのアクセス」の下の「新しいキーを作成」→「Androidキー」の順に選択する。
Androidキーの作成と許可対象Androidアプリの設定」画面が出てくるので、3で取得したアプリ鍵のSHA1フィンガープリントと、1で作成したパッケージ名をセミコロン区切りで並べて入力し、「作成」を押すと、生成されたAPIキーが表示される。

5. Android StudioプロジェクトへのGoogle Play servicesパッケージの追加

Android Studioでサンプルアプリ用プロジェクト (SampleMapApp) を開き、File→Project Structureを選択する。
Project Structure画面上で、app→Dependenciesのタブを開き、+ボタンを押し、さらに「1 Library dependency」を選択する。

Choose Library Dependencyの画面で、play-servicesを選択して、OKを押す。

この状態で再度OKを押す。

6. AndroidManifestへのAPIキーとパーミッションの追加

Google Play serviceの呼び出しのため、<application>の子要素に以下の記述を追加する。

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

<application>の子要素として、4で取得したAPIキーを記述する (以下の "APK_KEY" の部分)。

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

<manifest>の子要素としてパーミッションを記述する。
Google Maps Android APIの呼び出しには以下のパーミッションが必須。

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

現在位置の取得のためには、以下のパーミッションが追加で必要。

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

Google Maps Android APIは、地図のレンダリングOpenGL ES version 2を使うため、<manifest>の子要素に以下の記述が必要。

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

7. レイアウトの記述

res/layout/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.gms.maps.MapFragment"/>

8. アプリケーションコードの記述

MainActivity.java

package com.example.samplemapapp;

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);
    }
}

9. 署名付きAPKファイルの生成

作成したAndroidアプリをエミュレータあるいは実機で動かすためには、署名付きAPKファイルを生成する必要がある。
Android Studio上で、Build→Generate Signed APKを選択して、1で作成したキーストアおよび鍵を指定する。

生成したAPKファイルをadb installでインストールすると、以下のように地図が表示される。