How to update Google Play Services for Android Studio 2.2 emulators?

35,208

Solution 1

This may not be relevant to this question now, but wanted to post it here for future explorers, so that they see some land at the end of the sea. I had been struggling with this out of date Google Play Service on my Nexus 5 x86 emulator running API 25 and trying Firebase notification. I am using Firebase 10.0.1 which needs Google Play Services 10.0.1. But on my emulator, I always used to get the message

W/GooglePlayServicesUtil: Google Play services out of date. Requires 1008400 but found 9874900

W/FA: Service connection failed: ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null, message=null}

I had searched extensively a way to update the Google Play Services on my emulator, and whatever was suggested never worked. Finally, I tried creating a new emulator Nexus 5 x86_64 and API 24. Voila!!! It has Google Play Services 10.0.1 and my app works now.

It really beats me why the x86 image does not have the latest Google Play Serviecs and it does not allow me to update it in any manner, while the x86_64 image has the latest Google Play Services.

Hope this helps someone struggling with Google Play Services.

Solution 2

As for my case, I tried checking for updates on Android Studio, as well as the Google Play Services, and restarted Android Studio. Then the update dialog appeared, which allows me to update the emulator images with the correct Google Play Services version.

enter image description here

Wait for the update to finish, then create new AVDs based on the newly updated images, and everything is good to go.

Solution 3

Assuming you're using Android's default AVDs, as opposed to Genymotion, you just have to make sure everything has been updated.

This is what's working for me. If you are using using the current version of play services, 9.6.1 or higher, make sure of the following:

  1. Your build tools version is 24.0.3 or higher
  2. In the SDK Manager (SDK Platforms tab):
    • If testing Nougat, your emulator is using Google APIs System Image Revision 8 or higher (I'm using "Google APIs Intel x86 Atom_64 System Image")
    • Google APIs is installed and updated (For me, "Google APIs, Android 24" - Revision 1.0.0)
  3. In the SDK Manager (SDK Tools tab):
    • Android SDK Platform Tools is version 24.0.3 or higher
    • Android SDK Tools is version 25.2.2 or higher
    • Google Play Services is installed and using version 33 or higher
    • (Probably optional) Google Repository is installed and version 36 or higher

After ensuring all of that, and restarting Android Studio (because better safe than sorry), make a new AVD. I mainly use the following settings: - Nougat (API 24) - ABI - x86_64 - Target - Android 7.0 (with Google APIs)

This is working for me, as I was having the same problem this morning until I updated everything. Good luck :)

Solution 4

In case people are still looking for an answer and haven't found any solution that fixes or updates the Google Play Services on their emulators, here's what helped me. I had followed multiple SO posts that recommend getting latest SDK build tools but missed a very important update. That is, from the SDK Platforms you must update/download

Google Play Intel x86 Atom System Image

A picture is worth a thousand words:enter image description here

Share:
35,208
Jim In Texas
Author by

Jim In Texas

Updated on May 04, 2020

Comments

  • Jim In Texas
    Jim In Texas about 4 years

    There are a number of variations of this question, however most are very old, and don't really answer the question at all. I'm NOT asking how to install Play Services, that is installed in the Studio 2.2 emulators.

    The problem is that these emulators are using an old version of Play services.

    When I run a test app that uses Firebase to facilitate Google login I get this alert dialog from a Nexus 5 API 23 emulator:

    enter image description here

    In the onCreate method of my login activity I have this code:

    int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    
        switch(result) {
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
                Log.d(TAG,"SERVICE_VERSION_UPDATE_REQUIRED");
                break;
            case ConnectionResult.SUCCESS:
                Log.d(TAG, "Play service available success");
                break;
            default:
                Log.d(TAG, "unknown services result: " + result);
    
        }
    

    This always returns SERVICE_VERSION_UPDATE_REQUIRED.

    Clicking update in the alert dialog does nothing that I can detected. In the debug log I get this message when Play Services startup fails:

    W/GooglePlayServicesUtil: Google Play services out of date.  Requires 9080000 but found 8489470
    

    My application runs fine on a real Android device.

    What simple thing am I missing?

    TIA