AndroidStudio × Genymotion で　Google Maps Android API v2を動かすメモ

#はじめに
AndroidStudioとGenymotionで高速android開発を楽しめるのはいいのですが、Google Maps Android API v2を使おうとした時につまずいたのでメモ 

#前提条件
AndroidStudioとGenymotionのインストールはすんでいるものとして説明していきます

#GenymotionにGoogle Play Servicesをインストール
はじめGenymotionにはGoogle Play Servicesがインストールされていません。そのためまずこれをインストールします

###1.必要なものをダウンロード
まず[ARM Translation Installer v1.1](http://click.xda-developers.com/api/click?format=go&jsonp=vglnk_jsonp_14027736155496&key=f0a7f91912ae2b52e0700f73990eb321&libId=9dc7160d-eba1-4485-aa5a-c2eed2419661&loc=http%3A%2F%2Fforum.xda-developers.com%2Fshowthread.php%3Ft%3D2528952&v=1&out=http%3A%2F%2Fgoo.gl%2FtfjjMt&ref=http%3A%2F%2Fd.hatena.ne.jp%2Fitog%2F20140310%2F1394420088&title=%5BGUIDE%5D%20Genymotion%20%7C%20Installing%20ARM%20Translation%20and%20GApps%5BUpdated%20Nov.16%5D%20-%20xda-developers&txt=%3Cu%3E%3Cb%3EARM%20Translation%20Installer%20v1.1%20%3Ci%3E%3Cfont%20size%3D%221%22%3EHosted%20by%20FILETRIP%3C%2Ffont%3E%3C%2Fi%3E%3C%2Fb%3E%3C%2Fu%3E)をダウンロード

その次に
* [Google Apps for Android 4.4](http://click.xda-developers.com/api/click?format=go&jsonp=vglnk_jsonp_140277377410210&key=f0a7f91912ae2b52e0700f73990eb321&libId=9dc7160d-eba1-4485-aa5a-c2eed2419661&loc=http%3A%2F%2Fforum.xda-developers.com%2Fshowthread.php%3Ft%3D2528952&v=1&out=http%3A%2F%2Fgoo.gl%2FTVcd93&ref=http%3A%2F%2Fd.hatena.ne.jp%2Fitog%2F20140310%2F1394420088&title=%5BGUIDE%5D%20Genymotion%20%7C%20Installing%20ARM%20Translation%20and%20GApps%5BUpdated%20Nov.16%5D%20-%20xda-developers&txt=Google%20Apps%20for%20Android%204.4)
* [Google Apps for Android 4.3](http://click.xda-developers.com/api/click?format=go&jsonp=vglnk_jsonp_140277379805511&key=f0a7f91912ae2b52e0700f73990eb321&libId=9dc7160d-eba1-4485-aa5a-c2eed2419661&loc=http%3A%2F%2Fforum.xda-developers.com%2Fshowthread.php%3Ft%3D2528952&v=1&out=http%3A%2F%2Fgoo.im%2Fgapps%2Fgapps-jb-20130813-signed.zip&ref=http%3A%2F%2Fd.hatena.ne.jp%2Fitog%2F20140310%2F1394420088&title=%5BGUIDE%5D%20Genymotion%20%7C%20Installing%20ARM%20Translation%20and%20GApps%5BUpdated%20Nov.16%5D%20-%20xda-developers&txt=Google%20Apps%20for%20Android%204.3)
* [Google Apps for Android 4.2](http://click.xda-developers.com/api/click?format=go&jsonp=vglnk_jsonp_140277380571412&key=f0a7f91912ae2b52e0700f73990eb321&libId=9dc7160d-eba1-4485-aa5a-c2eed2419661&loc=http%3A%2F%2Fforum.xda-developers.com%2Fshowthread.php%3Ft%3D2528952&v=1&out=http%3A%2F%2Fgoo.im%2Fgapps%2Fgapps-jb-20130812-signed.zip&ref=http%3A%2F%2Fd.hatena.ne.jp%2Fitog%2F20140310%2F1394420088&title=%5BGUIDE%5D%20Genymotion%20%7C%20Installing%20ARM%20Translation%20and%20GApps%5BUpdated%20Nov.16%5D%20-%20xda-developers&txt=Google%20Apps%20for%20Android%204.2)
* [Google Apps for Android 4.1](http://click.xda-developers.com/api/click?format=go&jsonp=vglnk_jsonp_140277381781013&key=f0a7f91912ae2b52e0700f73990eb321&libId=9dc7160d-eba1-4485-aa5a-c2eed2419661&loc=http%3A%2F%2Fforum.xda-developers.com%2Fshowthread.php%3Ft%3D2528952&v=1&out=http%3A%2F%2Fgoo.im%2Fgapps%2Fgapps-jb-20121011-signed.zip&ref=http%3A%2F%2Fd.hatena.ne.jp%2Fitog%2F20140310%2F1394420088&title=%5BGUIDE%5D%20Genymotion%20%7C%20Installing%20ARM%20Translation%20and%20GApps%5BUpdated%20Nov.16%5D%20-%20xda-developers&txt=Google%20Apps%20for%20Android%204.1)
の中から、シミュレーターのバージョンにあったものをダウンロード

###2.ダウンロードしたものをGenymotionにインストール
ダウンロードしたzipファイルをGenymotion VMにドラッグアンドドロップします。File transfer in progressが表示されたあとダイアログが出るのでOKします。

###3.VMを再起動
Genymotion VMを再起動します

以上でGenymotionにGoogle Play Servicesをインストールできました。

#Google Play services SDKを導入

1. AndroidStudioのメニューバーにある![スクリーンショット 2014-06-15 4.34.51.png](https://qiita-image-store.s3.amazonaws.com/0/32046/00c79564-5777-dd54-8686-fcf21381b2b2.png)のアイコンをクリック

2. Extrasの中のGoogle Play servicesとGoogle Repositoryを選択してインストール
![スクリーンショット 2014-06-15 4.35.35.png](https://qiita-image-store.s3.amazonaws.com/0/32046/1df0457f-eac1-595d-ffd1-8b7fa34f8466.png)

3. 設定を反映するために念のためAndroid Studioを再起動

以上でGoogle Play services SDKを導入できました

##プロジェクトへの組み込む
インストールが完了したので、プロジェクトに組み込みましょう
1.「File」→「Project Structure」を選択して、Project Structureを開く
2.「Modules」→「あなたのアプリ名」→「Dependencies」タブ→「＋」アイコン→「1 Library dependency」とするとダイアログが出てくるので、Google Play Servicesを選択してOKをおす

![スクリーンショット 2014-06-15 5.25.27.png](https://qiita-image-store.s3.amazonaws.com/0/32046/c7cb2056-f086-428f-ce36-de3d5e556872.png)

3.OKを押してProject Structureをとじ、リストに反映されるのを待つ

srcファイルと同じ階層にあるbuild.gradleファイルのdependenciesに、

```
...
dependencies {
    compile 'com.google.android.gms:play-services:+'
    ...中略...
}
...
```

というように追加されていればOK!



#Google APIs ConsoleでAPI keyを取得

1. [Google APIs Console](https://code.google.com/apis/console/)に接続
2. 左側のProjectタブを選択し、新しいプロジェクトを作成する
![スクリーンショット 2014-06-15 4.46.13.png](https://qiita-image-store.s3.amazonaws.com/0/32046/a494108c-d73c-b4d8-2d39-144bbe8c0a30.png)
3. 作ったプロジェクトを選択
4. APIs & auth -> APIsと行き、Google Maps Android API v2のスイッチをオンにする

  ![スクリーンショット 2014-06-15 4.49.39.png](https://qiita-image-store.s3.amazonaws.com/0/32046/0036f805-fa21-930e-591e-25ba24eef197.png)

5. APIs & auth -> Credentialsと行きCreate new Keyをクリック

![スクリーンショット 2014-06-15 4.53.30.png](https://qiita-image-store.s3.amazonaws.com/0/32046/28acf407-723f-74e6-de87-e8e5e65ff589.png)

ここでAndroid Keyを選択すると次のような画面が出てきます

![スクリーンショット 2014-06-15 4.56.38.png](https://qiita-image-store.s3.amazonaws.com/0/32046/565ce894-c46c-7cfd-a757-5c610801364d.png)

ここで一番下の欄に入れるべき値はターミナルにつぎのように打ち込むことで取得できます

Mac OSの場合：
```
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
```

Windows OSの場合:

```
keytool -list -v -keystore "C:¥Users¥{Your account name}¥.android¥debug.keystore" -alias androiddebugkey -storepass android -keypass android
```

この値　＋　; ＋ パッケージ名でいいのですが、例えば
`45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example.myapp.app`
のようにパッケージ名を全て書き込まないと正常に動きませんでした。

#コードを書く

いよいよ実装です

```java:MainActivity.java
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);
    }
}
```

```xml:AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp.app" >
    <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"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>
        <activity 
            ・・・・中略・・・
        />
        </activity>
    </application>

</manifest>
```

```xml: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"/>
```

##なかなか解決できないエラーが出てきた時は

エラーが出る場合は大抵すぐに解決できるものですが、もしなかなか解決できない場合は

* VM上でアプリをアンインストール
* Android Studio上でプロジェクトをクリーン

するとうまくいくかもしれません

#終わりに
以上でAndroidStudio × Genymotion で　Google Maps Android API v2を動かすことができるようになりました！GPSでの移動などは実機がないとつらいものがありますが、大抵のことは爆速エミュレーターであるGenymotionでできるようです！
![スクリーンショット 2014-06-15 5.55.04.png](https://qiita-image-store.s3.amazonaws.com/0/32046/c0a58410-52a4-42f1-879a-1cbeed7beda6.png)