はじめに
AndroidStudioとGenymotionで高速android開発を楽しめるのはいいのですが、Google Maps Android API v2を使おうとした時につまずいたのでメモ
前提条件
AndroidStudioとGenymotionのインストールはすんでいるものとして説明していきます
GenymotionにGoogle Play Servicesをインストール
はじめGenymotionにはGoogle Play Servicesがインストールされていません。そのためまずこれをインストールします
1.必要なものをダウンロード
まずARM Translation Installer v1.1をダウンロード
その次に
* Google Apps for Android 4.4
* Google Apps for Android 4.3
* Google Apps for Android 4.2
* Google Apps for Android 4.1
の中から、シミュレーターのバージョンにあったものをダウンロード
2.ダウンロードしたものをGenymotionにインストール
ダウンロードしたzipファイルをGenymotion VMにドラッグアンドドロップします。File transfer in progressが表示されたあとダイアログが出るのでOKします。
3.VMを再起動
Genymotion VMを再起動します
以上でGenymotionにGoogle Play Servicesをインストールできました。
Google Play services SDKを導入
設定を反映するために念のためAndroid Studioを再起動
以上でGoogle Play services SDKを導入できました
プロジェクトへの組み込む
インストールが完了したので、プロジェクトに組み込みましょう
1.「File」→「Project Structure」を選択して、Project Structureを開く
2.「Modules」→「あなたのアプリ名」→「Dependencies」タブ→「+」アイコン→「1 Library dependency」とするとダイアログが出てくるので、Google Play Servicesを選択してOKをおす
3.OKを押してProject Structureをとじ、リストに反映されるのを待つ
srcファイルと同じ階層にあるbuild.gradleファイルのdependenciesに、
...
dependencies {
compile 'com.google.android.gms:play-services:+'
...中略...
}
...
というように追加されていればOK!
Google APIs ConsoleでAPI keyを取得
- Google APIs Consoleに接続
- 左側のProjectタブを選択し、新しいプロジェクトを作成する
- 作ったプロジェクトを選択
- APIs & auth -> APIsと行き、Google Maps Android API v2のスイッチをオンにする
- APIs & auth -> Credentialsと行きCreate new Keyをクリック
ここでAndroid Keyを選択すると次のような画面が出てきます
ここで一番下の欄に入れるべき値はターミナルにつぎのように打ち込むことで取得できます
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
のようにパッケージ名を全て書き込まないと正常に動きませんでした。
コードを書く
いよいよ実装です
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 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 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でできるようです!