94

I was following this (http://developer.android.com/google/play-services/setup.html#Install). It asked me to install Google APIs for Android API 17 (or higher) but when i opened SDK Manager, this is how it looked like:

SDK Manager

So, my question is: What are these two Google APIs? And, what is the difference between these two?

Amna Ali
  • 1,705
  • 1
  • 15
  • 19
  • 1
    IIRC, they are for different processors. – Mike D May 01 '14 at 21:01
  • 14
    The ARM image more closely matches most Android devices, but requires the processor to be emulated and is thus very slow. The x86 is potentially quite a bit faster, *possibly* using virtual machine support mechanisms to execute the code in a partially native way. You can try the x86 for speed, and fallback to the ARM if you have compatibility problems. See http://developer.android.com/tools/devices/emulator.html – Chris Stratton May 01 '14 at 22:17

1 Answers1

129

In the beginning the only Android system images available ran on the ARM instruction set. A system image is used to create different Android Virtual Devices (AVDs) and emulate the different Android devices in common use.

As developer workstations are usually Intel x86 based, the ARM instruction set had to be emulated as well. This resulted in poor performance from the AVDs due mainly to the amount of translation the x86 processor was doing to also emulate the ARM instruction set.

At Android 4.0.3 (API 15) Intel provided their own x86 based Android system image. This could then be used to create AVDs that did not need to do ARM translation. Combined with the Intel Hardware Accelerated Execution Manager (HAXM) the x86 AVMs were up to 10 times faster than the equivalent ARM emulators.

Support for Google specific Android APIs like the Android Google maps API, are not provided with the standard Android system images. They need to be installed separately using the Android SDK Manager. To use these APIs with an x86 system image you need to also install the Google APIs (x86 System Image) for the same API level.

oenpelli
  • 3,127
  • 2
  • 26
  • 20
  • 4
    So which do I choose when I right click my project, go to properties, and go to android? – Andrew Sep 04 '14 at 21:37
  • 5
    Click both of these: (1) Intel x86 Atom System Image and (2) Google APIs (x86 System Image) See here for more details: https://software.intel.com/en-us/blogs/2014/03/06/now-available-android-sdk-x86-system-image-with-google-apis – user64141 Oct 16 '14 at 18:01
  • so my phone runs on ARM hardware and that image is closer to the actual thing ,but for testing via a x86 PC that image is faster , so i should be good to go with x86 ? – Sainath S.R Jan 01 '15 at 09:08
  • Probably depends what you mean by good to go. Either image will be doing a lot of translating to work, I'm not sure it is a valid assumption that one emulation will necessarily be better than another. It is wisely written that the only way to ensure your code will run on a given device is to test it on that device. – oenpelli Jan 05 '15 at 00:32
  • 2
    @oenpelli, What does "API" in "Google APIs" refer to? When we select to install "Google APIs", what actually happens? Does it just download the Android **Java** libraries used by Google or are there other system code involved? – Pacerier Jul 01 '15 at 08:05
  • 1
    @Pacerier with "Google APIs" you can set up google account inside emulator, which is not available in pure Android image. Google Maps api added as well in case your app needs it. – artkoshelev Aug 30 '16 at 10:51
  • Would you recommend Atom_64? It should be faster too right? – Neon Warge Sep 01 '16 at 12:44
  • You added : At Android 4.0.3 (API 15) Intel provided their own x86 based Android system image. is it intel or google? – Ahesanali Suthar Sep 06 '16 at 02:22
  • 1
    When a new version of the system image comes. Do I need to re-create my AVD to be able to use the new image features? – powder366 Nov 11 '16 at 12:31
  • 5
    what is the difference between google api image and google play image? – Banee Ishaque K Jul 14 '17 at 15:27
  • @BaneeIshaqueK as I recall correclty, the `google play` means Play Store apps is installed + play service to run, `google api` is the `play service` only, without play store apps. refers here: https://stackoverflow.com/a/57917259/3763032 – mochadwi Nov 20 '19 at 06:30
  • In summary: We've to install 3 of them (`Google APIs/Play, Google APIs Intel x86 System Image, Intel x86 System Image`) - Google APIs/Play @artkoshelev said: To setup google account inside emulator. - Google APIs Intel x86 System Image: Required to use play service inside x86 - Intel x86 System Image: for better & faster emulation in a mac or PC cmiiw – mochadwi Nov 20 '19 at 06:34