Getting Android emulator working with Google Maps API Key

I was trying to get an Android app that uses Google Maps API to display a MapView running on the emulator.  It took quite a bit of hair pulling to finally get it working.

First, I tried using a self-signed keystore instead of the the debug.keystore provided through the Android SDK.  I created my keystore using keytool -genkey from JDK.  Then I switch the app from using the default, debug.keystore, to my-new-self-signed.keystore.  Using keytool -list, I got the MD5 of the certificate that is needed to obtain a Google Map API key.  Then the API key was put into the MapView android:apikey attribute.  When I brought up the app in the emulator, I got a blank map grid screen.  The reason I wanted to use the self-signed keystore instead of the debug keystore is so I don’t have to obtain a new Map API key and change the code to reflect this upon releasing the app.

So, I decided to go with the debug.keystore and that worked fine.  Here is what I had to do.

  1. $ keytool -list -alias androiddebugkey -keystore <path_to_debug_keystore>.keystore -storepass android -keypass android
  2. Copy that MD5 and goto
  3. Signup for an API key
  4. In my xml file that has the views for the activity, add
  5. In the Manifest.xml file, add the permissions needed
    <uses-permission android:name=”android.permission.INTERNET”></uses-permission>
    <uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”></uses-permission>
  6. In the Manifest.xml file, add the maps library
    <uses-library android:name=”” />
    within the application tag
  7. The entire Manifest.xml looks like this
    <?xml version=”1.0″ encoding=”utf-8″?>
    <manifest xmlns:android=””
    <uses-permission android:name=”android.permission.INTERNET”></uses-permission>
    <uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”></uses-permission>
    <application android:icon=”@drawable/icon” android:label=”@string/app_name”>
    <uses-library android:name=”” />
    <activity android:name=”.ShowDesktop”
    <action android:name=”android.intent.action.MAIN” />
    <category android:name=”android.intent.category.LAUNCHER” />
  8. The default activity file should look like this

    package com.informationideas.mapapp;
    import android.os.Bundle;

    public class ShowDesktop extends MapActivity {

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {


    protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;

Now off to building cool things with the map!