103

I am using the Android SDK Manager to install the system image for the Android M Preview. However, I noticed that there are two separate images for the x86 platform.

enter image description here

What are the differences between the two and which one should I select for my 64-bit Ubuntu 15.04 installation? (My CPU includes AMD-V and it is enabled in the BIOS, in case that makes any difference.)

Nathan Osman
  • 63,773
  • 66
  • 242
  • 344
  • 5
    AFAIK, it's just that they emulate different CPU architectures, just like ARM, ARM64, MIPS, etc. – CommonsWare Jun 03 '15 at 23:31
  • 6
    It doesn't matter what machine you're using as your IDE. This has to do with what hardware you are emulating. So the Atom vs Atom_64 images is whether you want to emulate running your app on a device with an Atom CPU or an Atom 64-bit CPU. – hungryghost Jun 04 '15 at 00:33
  • 2
    It looks like one is a 32bit CPU image, and the other one is a 64bit one, – Phantômaxx Jun 04 '15 at 07:35
  • See the top answers [to this similar question](https://stackoverflow.com/q/32084413/199364); IMHO a clearer explanation than answers below. – ToolmakerSteve Mar 28 '18 at 10:20

4 Answers4

71

According with this article

With Google’s recent release of its x86 64-bit Android 5.0 emulator image, developers can create 64-bit apps for Intel Atom processor-based devices.

Android 32-bit vs 64-bit

Many 64-bit platforms today, including Solaris, AIX*, HP-UX*, Linux*, OS X*, BSD, and IBM z/OS*, use an LP64 model. Since Android is based on the Linux kernel, Android 64-bit platforms also use the LP64 model.

Intel 64-bit CPUs have a 32-bit compatibility mode. While 32-bit applications will run on 64-bit processors, compiling with a 64-bit optimizing compiler allows them to take advantage of the architectural benefits of a 64-bit environment.

How to run 64-bit apps on emulators

Create a new Android virtual device (AVD) based on Intel Atom processor 64-bit system image and open the AVD Manager in SDK Manager or ADT. Then click ‘create’ and fill the fields as shown in the Figure . Now the 64-bit AVD emulator is ready to run.

enter image description here

64-Bit Android* OS

By default, all 32-bit applications run without a glitch on 64-bit processors, but might run slower than applications tuned to run on 64-bit processors.

Android is ready for 64-bit processing

One of the key benefits of the move from 32-bit to 64-bit chips is largely theoretical right now: support for exabytes of RAM, rather than mere gigabytes. But the way 64-bit chips handle memory can also lead to improved performance in some tasks.

Summary

Android with 64-bit technologies for Intel Atom processor-based platforms can help developers to optimize their applications now. Building Android applications for 64-bit is just as easy as building traditional 32-bit Android applications. You can now use the official Android 64-bit emulator to run and debug 64-bit apps.

Maybe this articles can help you to understand the difference between this system images.

Update

Google now encourage to use x86 emulator like you can see in this image

enter image description here

The difference is that when using x86 images, it now uses fast, hardware-accelerated virtualization under the right conditions (HAXM) so it doesn't feel like there's a fat middle layer anymore.

Jorge Casariego
  • 20,634
  • 6
  • 84
  • 96
  • 1
    You mentioned applications that "compiling with a 64-bit optimizing compiler". So, how to compile my application with a 64-bit compiler and gain an advantage when running in a 64-bit environment? – Artem M Apr 22 '16 at 17:46
  • 3
    @Jorge Casariego should we use `intel x86 atom system image` during developing by AVD for better speed of emulator? – iraj jelodari Aug 05 '16 at 17:11
  • 13
    But if we don't care about the target architecture, the essential question is: does the "Atom_64" emulator run any faster on a 64-bit Intel CPU? I have no idea from your lengthy answer. And your mention of "x86" is simply confusing, since the question is about a choice between two images, both of which mention x86, which only differ by mentioning Atom vs Atom_64. – ToolmakerSteve Mar 28 '18 at 10:06
  • @ToolmakerSteve I indeed have the same doubts. Also i am seeing that now each package is became quite large so, choose the right ones is critical in order to fill with unnecessary data the path – Carmine Tambascia Oct 27 '19 at 18:28
  • So does the Update at the bottom of your post mean Atom with HAXM is faster than Atom_64? – Bink Oct 13 '20 at 20:18
16

FYI: In the official Android Studio documentation it says that "x86 system images run the fastest in the emulator."

I haven't tried the 64bit, so I can't really comment on that. Maybe someone else can.

Algiver
  • 169
  • 1
  • 2
  • 1
    Doesn't answer the question, which is about choosing between the two different "x86" system images, one of which also mentions "atom_64", the other of which mentions "atom". – ToolmakerSteve Sep 22 '18 at 19:25
10

i have tried both and x86_64 happens to be a little slower than x86. what i found out after a little research is that x86 can run on 32 bit based instruction set and 64 bit based while x86_64 runs only on 64 bit which needs somekind of more decoding...

you can also check here https://developer.android.com/ndk/guides/x86-64.html for more info..

X-Black...
  • 973
  • 13
  • 25
  • 1
    The first sentence is potentially useful information. The rest of this answer is fundamentally confused, because "x86_64" refers to the device you are *emulating*, not the pc you are running your emulator on. Bottom line: it doesn't matter which you pick, unless you are testing for some subtle difference in behavior on a specific target architecture. – ToolmakerSteve Sep 22 '18 at 19:32
  • 1
    @ToolmakerSteve it matters how the hardware is emulated, specifically if host cpu can be used directly through hardware virtualization technology. – andho Sep 04 '19 at 21:56
  • @andho can you elaborate more? I'm confused; so which one is faster/lighter/easier on my system to emulate? x86 or x86_64 – buncis Sep 06 '19 at 12:30
  • 1
    @buncis if you're CPU supports VT (most do) and you have it enabled in your BIOS and necessary modules installed in the OS, then both x86 and x86_64 should have similar speed as the emulator instructions are run directly on the host CPU. If VT is not available, software emulation is used. In this case x86 is faster/lighter/easier as a smaller address space is need to emulate x86 than x86_64 (eg. 64bit registry vs 32bit registry). – andho Sep 08 '19 at 18:35
2

x86 means 32 bit system. Now I have read all the above answers and I'll directly come to the point.

x86 Atom -> 32bit Intel CPU with 32bit android simulation

x86 Atom_64 -> 32bit Intel CPU with 64bit android simulation